2013-03-28 2 views
0

Я пытаюсь написать программу, которая загружает числа в текстовый файл в массив. Текстовый файл называется «номерами», а числа находятся в следующем формате: 3,49,52,40,34 и т. Д.Загрузка чисел в текстовый файл с использованием C

Когда я пытаюсь запустить программу, я получаю сообщение «не отвечает на ошибку» ». Может ли кто-нибудь указать, что я делаю неправильно? Большое спасибо.

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#define MAX 32 

int main (void) { 

    FILE* fp; 
    fp = fopen ("numbers.txt", "r"); 
    if (fp == NULL) 
     puts ("No data in file"); 
     return 0; 

    int n = 0; 
    int i = 0; 
    int j = 0; 
    int a[MAX]; 

    while (fscanf(fp, "%d, ", &n) > 0) { 
     a[i++] = n; 
    } 

    fclose (fp); 

    printf ("Data loaded"); 

    for (j = 0; j < MAX; j++) { 
     printf ("%d", a[j++]); 
     printf ("THE END"); 
    } 
    return 0; 
} 
+0

Вы забыли кронштейн в 'состоянии if', которое вызывает программу, чтобы вернуться, не закрывая дескриптор файла. – sgarizvi

+1

Отсутствует {} после вашего 'if (fp == NULL)' означает, что вы всегда будете выполнять возврат 0. –

+0

большое вам спасибо! Я не могу поверить, что я пропустил это – user1816546

ответ

2

Установите кронштейн в состоянии if:

FILE* fp; 
fp = fopen ("numbers.txt", "r"); 
if (fp == NULL) 
{ 
    puts ("No data in file"); 
    return 0; 
} 
+0

большое спасибо! – user1816546

1
if (fp == NULL) 
    puts ("No data in file"); 
    return 0; 

То же, что:

if (fp == NULL) 
    puts ("No data in file"); 
return 0; //returned already 

Ваша программа уже возвращается без чтения из файла.

Вы должны сделать

if (fp == NULL) 
{ 
    puts ("No data in file"); 
    return 0; 
} 
Смежные вопросы