2014-02-16 3 views
-3

Я недавно узнал об использовании файлов ввода-вывода в C, и в одном из моих упражнений книги мне предлагается прочитать строки пар числа и добавить их, а затем распечатать их в выходной файл.Чтение строки из файла в C

Что я имею в виду:

Если входной файл выглядит следующим образом:

12 13 
24 26 
23 13 

выходной файл будет:

25 
50 
36 

Я попытался читать ее как строку с помощью:

fscanf(in, "%s", &string); //in is the input file pointer 

, но он не работает (вызывает сегмент. ошибка)

Моя проблема в том, что я не могу принимать строки пар чисел, используя функцию fscanf, так как я не знаю, сколько строк есть во входном файле.

Таким образом, мой вопрос: Как я могу прочитать входной файл, содержащий количество строк, если я не знаю, сколько строк есть? Могу ли я прочитать его как строку?

Благодарим вас за продвижение.

Майкл

+4

Мы не можем отлаживать или исправлять код, который мы не можем видеть. –

+1

Вы читаете файл по строке в цикле, пока не дойдете до конца файла (функция 'eof'). – hivert

+0

Подсказка: вам не нужно знать точное количество строк, просто прочитать строку, обработать ее и повторить до EOF. –

ответ

-1

Вот некоторые рабочий код:

#include <stdio.h> 
#include <conio.h> 

main() 
{ 
int a,b; 
FILE *fp = fopen("filename.txt", "r"); //open file for reading 
FILE *f = fopen("file.txt", "w");  //open file for writing 

while (!feof (fp))      //reading file until end of file 
{ 
    fscanf (fp, "%d", &a); 
    fscanf (fp, "%d", &b); 
    int sum = a + b; 
    fprintf(f, "%d\n", sum); //writing summation to a file 
} 

fclose(f); //close files 
fclose(fp);   
return 0; 
} 

Просто создайте filename.txt и писать цифры в нем. И создайте пустой файл .txt.

+1

Вы ожидаете, что 'feof' предсказать будущее и рассказать вам, будет ли будущее чтение успешным или нет. Он не может этого сделать. –

+0

Как @DavidSchwartz этот метод приема в наборах чисел не работает –

Смежные вопросы