【发布时间】:2014-11-10 12:40:51
【问题描述】:
我正在编写一个用于从文本文件中读取数据的小型 c 程序。 我正在使用 c,但我的知识非常基础。
#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 个标题行,下面的行类似于: SOMETEXT 值 值 值 控制台输出为:
buffer =SOMETEXT
buffer =SOMETEXT
buffer =SOMETEXT
为什么 fscanf 函数在读取缓冲区字符串后不移动指针。 我在预测这样的输出:
buffer =SOMETEXT
buffer =
buffer =
提前致谢!
【问题讨论】:
-
这里的
HEADERLINES是什么? -
HEADERLINES 在本例中是一个预定义常量,字面意思是 2(标题行数)
-
阅读fscanf(3)。使用返回值。编译所有警告和调试信息 (
gcc -Wall -g)。 使用您的调试器。 (gdb) -
返回值为:1(第一次调用),否则为零
-
可能输入的某处有一个数字。显示 input.txt