使用fscanf跳过行

使用fscanf跳过行,c,C,当我在使用C和fscanf读取文件时使用以下命令跳过一行时,我收到以下编译器警告: warning: too many arguments for format [-Wformat-extra-args] fscanf(myFile, "%*[^\n]\n", NULL); 这个程序运行得非常好。但是,我想知道是否有一种方法可以跳过文件中的一行,这种方法与上面的方法一样简单,并且不给编译器警告(或者对上面的内容进行简单的编辑是理想的)?这种跳过一行的方法是在没有提到任何此类警告的情况下采用

当我在使用C和fscanf读取文件时使用以下命令跳过一行时,我收到以下编译器警告:

warning: too many arguments for format [-Wformat-extra-args]
fscanf(myFile, "%*[^\n]\n", NULL);  

这个程序运行得非常好。但是,我想知道是否有一种方法可以跳过文件中的一行,这种方法与上面的方法一样简单,并且不给编译器警告(或者对上面的内容进行简单的编辑是理想的)?这种跳过一行的方法是在没有提到任何此类警告的情况下采用的。在前面的问题中介绍了跳过一行的其他方法;然而,没有一个像上面提到的那样是最低限度的

删除空值。警告是因为编译器从
*
中了解到,您不希望将结果存储在任何位置(只需使用指定的模式推进文件)。但是,您指定了一个位置(可以是NULL),这让它有些“惊讶”。

fscanf(myFile,“%*[^\n]\n”,NULL)-->
fscanf(myFile,“%*[^\n]\n”)但其他代码会更好。简单。切中要害。没有更多的编译器警告。干杯,@chux。您应该知道,尽管
fscanf()
调用只会返回0(如果开始扫描时没有更多输入,则返回EOF),但只有在下一个换行符之前至少有一个非换行符时,它才会读取换行符。如果需要基于行的输入,请不要使用
scanf()
函数系列;使用(或在POSIX机器上使用)。然后,如果合适,可以使用
sscanf()
解析该行。谢谢你,乔纳森!我将研究fgets(),因为您和chux都认为fscanf的这种实现可能不是最佳选择。非常感谢@A.S.H,这非常有意义。没有更多的警告。新年快乐!