2014-09-16 4 views
0

Я пишу небольшую c-программу для чтения данных из текстового файла. Я использую c, но мои знания очень просты.C: fscanf не изменяет filestream

#define MAXLINELEN 200 
void skipLines(FILE *, int); 
int readnextval(FILE* , double *); 

void main(int argc, char *argv[]) 
{ 
FILE* in_File=fopen("input.txt","r"); 

char buffer[MAXLINELEN]; 
    skipLines(in_File,HEADERLINES); 
    fscanf(in_File," %[^0-9\n] ",buffer); 
    printf("buffer =%s\n",buffer); 
    fscanf(in_File," %[^0-9\n] ",buffer); 
    printf("buffer =%s\n",buffer); 
    fscanf(in_File," %[^0-9\n] ",buffer); 
    printf("buffer =%s\n",buffer); 
} 

Мой текстовый файл имеют 2 Headerlines и следующая строка что-то вроде: SOMETEXT значения значения значения Выхода в консоли:

buffer =SOMETEXT 
buffer =SOMETEXT 
buffer =SOMETEXT 

Почему функция fscanf не двигается указателя после чтения строка буфера. я предсказывал такой вывод:

buffer =SOMETEXT 
buffer = 
buffer = 

Заранее спасибо!

+0

Что такое 'HEADERLINES' здесь? – Rustam

+0

HEADERLINES - это предопределенная константа буквально 2 в этом примере (количество строк заголовка). – questioner

+2

Прочитайте [fscanf (3)] (http://man7.org/linux/man-pages/man3/fscanf.3.html). Используйте возвращаемое значение. Скомпилируйте все предупреждения и информацию об отладке ('gcc -Wall -g'). ** Используйте ваш отладчик. ** ('gdb') –

ответ

0

Проблема решена. Спасибо за полезные комментарии. Значение буфера и позиция потока остаются неизменными, когда fscanf не может найти подходящую строку для хранения (возвращаемое значение == 0) в этом примере.