有没有办法知道fscanf何时读取空白或新行?

有没有办法知道fscanf何时读取空白或新行?,c,scanf,C,Scanf,我想知道是否有办法知道fscanf何时读取空白或新行 例如: 将询问词格式化为斜体 链接返回 当fscanf读取字符串直到它遇到换行符或空格(使用%s)时,它将读取格式以及它后面和前面的空格。问题是,有没有办法知道它读了一个空格?输入第二行后,是否有方法知道它读取了回车?您可以指示fscanf将空格读取到变量中,而不是读取和丢弃空格。使用类似于[\n\r\t]*的内容,但需要在该表达式中包含更多字符。根据区域设置和运行时字符集的某些功能,您可能希望在使用之前编写一个单独的函数来计算适当的格式字符

我想知道是否有办法知道fscanf何时读取空白或新行

例如: 将询问词格式化为斜体 链接返回


当fscanf读取字符串直到它遇到换行符或空格(使用%s)时,它将读取格式以及它后面和前面的空格。问题是,有没有办法知道它读了一个空格?输入第二行后,是否有方法知道它读取了回车?

您可以指示fscanf将空格读取到变量中,而不是读取和丢弃空格。使用类似于
[\n\r\t]*
的内容,但需要在该表达式中包含更多字符。根据区域设置和运行时字符集的某些功能,您可能希望在使用之前编写一个单独的函数来计算适当的格式字符串一次


如果需要将\n与其他类型的空白区区分开来,则可以使用包含刚读完的空白区的变量。根据您的需要,您可能需要计算其中的\n个字符。

答案是否定的。如果您想知道这些事情,您必须自己解析输入。与其这样做,只需使用
getline
fgets
来获取一行输入,然后根据需要使用
sscanf
atoi
解析行。这就是我的想法,我选择了带头解析整行,但在开始之前,我决定看看是否有更简单或更简单的方法,感谢Jim Balter和nneonneo。