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 */