Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取C中的文件内容,跟踪新行_C_Scanf_Stdio_File Pointer - Fatal编程技术网

读取C中的文件内容,跟踪新行

读取C中的文件内容,跟踪新行,c,scanf,stdio,file-pointer,C,Scanf,Stdio,File Pointer,我使用fscanf()。数据文件包含由任何空格分隔的字符串。当使用fscanf()读入字符串时,将检查它们是否有任何无效信息。我需要跟踪项目所在的行号,以便在检测到无效项目时显示该项目的行号。正如我所说,数据文件不是每行一个字符串。还有什么比把所有内容都读入新行、将其拆分为单个字符串并检查这些字符串更优雅的吗?我可以确定文件指针当前指向的行号吗?C I/O库中没有行号计数器。你需要自己记录行号 我建议您使用fgets一次读取一行,每次递增行号计数器,然后使用sscanf从该字符串读取项目 C I

我使用
fscanf()。数据文件包含由任何空格分隔的字符串。当使用
fscanf()
读入字符串时,将检查它们是否有任何无效信息。我需要跟踪项目所在的行号,以便在检测到无效项目时显示该项目的行号。正如我所说,数据文件不是每行一个字符串。还有什么比把所有内容都读入新行、将其拆分为单个字符串并检查这些字符串更优雅的吗?我可以确定文件指针当前指向的行号吗?

C I/O库中没有行号计数器。你需要自己记录行号


我建议您使用
fgets
一次读取一行,每次递增行号计数器,然后使用
sscanf
从该字符串读取项目

C I/O库中没有行号计数器。你需要自己记录行号


我建议您使用
fgets
一次读取一行,每次递增行号计数器,然后使用
sscanf
从该字符串读取项目

C I/O库中没有行号计数器。你需要自己记录行号


我建议您使用
fgets
一次读取一行,每次递增行号计数器,然后使用
sscanf
从该字符串读取项目

C I/O库中没有行号计数器。你需要自己记录行号


我建议您使用
fgets
一次读取一行,每次递增行号计数器,然后使用
sscanf
从该字符串读取项目

请注意,如果提供的缓冲区不够长,
fgets
可能会读取部分行,从而破坏验证过程和行计数方案。您可以通过检查缓冲区末尾是否存在最终的
'\n'
,并在检测到的部分读取上重新分配缓冲区来检测此情况。非标准的
getline
函数将为您执行此操作,请检查您的环境是否提供了此功能。请注意,
fgets
如果提供的缓冲区不够长,可能会读取部分行,从而破坏验证过程和行计数方案。您可以通过检查缓冲区末尾是否存在最终的
'\n'
,并在检测到的部分读取上重新分配缓冲区来检测此情况。非标准的
getline
函数将为您执行此操作,请检查您的环境是否提供了此功能。请注意,
fgets
如果提供的缓冲区不够长,可能会读取部分行,从而破坏验证过程和行计数方案。您可以通过检查缓冲区末尾是否存在最终的
'\n'
,并在检测到的部分读取上重新分配缓冲区来检测此情况。非标准的
getline
函数将为您执行此操作,请检查您的环境是否提供了此功能。请注意,
fgets
如果提供的缓冲区不够长,可能会读取部分行,从而破坏验证过程和行计数方案。您可以通过检查缓冲区末尾是否存在最终的
'\n'
,并在检测到的部分读取上重新分配缓冲区来检测此情况。非标准的
getline
函数将为您执行此操作,请检查您的环境是否提供了此功能。