2015-10-30 12 views
0

Я пытаюсь прочитать в файле под названием «pg.txt» и распечатать его содержимое, и я получаю ошибку abort trap:6. Я не понимаю, почему я это получаю.Abort trap: 6 for fopen

Вот мой main file:

#include <stdio.h> 
#include <stdlib.h> 
#include <ctype.h> 

int main(){ 
    char s1[10]; 
    int d1; 
    int n1; 
    int n2; 
    int n3; 
    int n4; 

    FILE * fp; 

    fp = fopen ("pg.txt", "r"); 
    int i; 
    fscanf(fp, "%d", &d1); 
    printf("numTypes |%d|\n", d1); 
    for (i = 0; i < d1; i++){ 
    fscanf(fp, "%s %d %d %d %d", s1, &n1, &n2, &n3, &n4); 
    printf("type1 |%s|\n", s1); 
    printf("Avg CPU |%d|\n", n1); 
    printf("avg burst |%d|\n", n2); 
    printf("avg interarrival |%d|\n", n3); 
    printf("avg io |%d|\n", n4); 
    } 

    printf("Before CLOSING\n"); 
    fclose(fp); 

    return(0); 
} 

и это мой pg.txt файл:

2 
interactive 20 10 80 5 
batch 500 250 1000 10 

Это выход:

numTypes |2| 
type1 |interactive| 
Avg CPU |20| 
avg burst |10| 
avg interarrival |80| 
avg io |5| 
type1 |batch| 
Avg CPU |500| 
avg burst |250| 
avg interarrival |1000| 
avg io |10| 
Before CLOSING 
Abort trap: 6 

Я новичок в C, так любое объяснение и помощь будут высоко оценены.

+0

Какая строка получает ошибку? – Barmar

+1

Вы должны проверить, выполнено ли 'fopen()'. Он возвращает 'NULL', если есть ошибка при попытке открыть файл. – Barmar

+0

@ Бармар это почти наверняка причина. –

ответ

2

Проблема заключается в том, что у s1 не было выделенного пространства. Когда s1 [10] был изменен на s1 [12], больше не было прерываний ловушек.