fscanning .txt文件时如何跳过第一行?
我正在使用C,我的知识非常基础。 我想扫描文件并在第一行或第二行之后获取内容…
我试过了 :
fscanf(pointer,"\n",&(*struct).test[i][j]);
但是这个语法只是从第一行开始=
这怎么可能 ?
谢谢。
fgets将获得一行,并从下一行开始设置文件指针。 然后,您可以在第一行之后开始阅读您想要的内容。
char buffer[100]; fgets(buffer, 100, pointer);
只要您的第一行长度少于100个字符,它就可以正常工作。 否则,您必须检查并循环。
我可以使用以下指令跳过带有scanf的行:
fscanf(config_file, "%*[^\n]\n", NULL);
格式字符串表示包含任何字符(包括空格)的行。 格式字符串中的*和NULL指针意味着我们不想保存行,而只是增加文件位置。
格式字符串说明:
%
是每个scanf格式字符串开头的字符;
*
表示不将找到的模式放在任何地方(通常是在格式字符串之后将模式保存到参数中,在这种情况下参数为NULL);
[^\n]
表示除换行符之外的任何字符;
\n
表示换行;
所以[^\n]\n
表示以换行符结尾的全文行。
参考这里 。
目前尚不清楚你要将数据存储到什么地方,因此通过跳过字节直到你越过\n
来猜测答案并不容易?
FILE *in = fopen("file.txt","rb");
然后你可以用fgets
跳过整行但是它不安全(因为你需要先验估一行的长度),否则使用fgetc
:
uchar8 c; do c = fgetc(in); while (c != '\n')
最后,您应该在fscanf
使用格式说明符来实际解析数据,例如
fscanf(in, "%f", floatVariable);
你可以在这里参考说明者。
fgets会在这里工作。
#define MAX_LINE_LENGTH 80 char buf[MAX_LINE_LENGTH]; /* skip the first line (pFile is the pointer to your file handle): */ fgets(buf, MAX_LINE_LENGTH, pFile); /* now you can read the rest of your formatted lines */