Scanf() 与格式说明符中提供的 \n 和 '\n' 的工作方式不同

Scanf() working differently with \n and '\n' supplied in format specifier

#include "stdio.h"
int main(){
    float longi;
    float lati;
    char info[80];
    int started = 0;

    puts("Data=[");
    while((scanf("%f\n%f\n%s",&lati,&longi,info))==3){ //here is my doubt.


        printf("\n{latitude:%f, longitude:%f, info:%s},",lati, longi, info);
    }
    puts("\n]");    
}

上面的代码按预期工作,但我通过反复试验弄明白了。这需要使用 'enter' 键作为分隔符的三个输入。最初我提供:

'\n' 而不是 \n

在格式说明符中,但这没有用;每次只需要一个输入。

这两者有什么区别,scanf()如何处理它们?

所以你的代码中有一个 scanf("%f'\n'%f'\n'%s",&lati,&longi,info)

当您分解此代码时:

  • %f - 期待浮动
  • ' - 期望输入
  • 中的文字 '
  • \n - 期待一个换行符
  • ' - 期望输入
  • 中的文字 '

...等等。

\n 是一个换行符。未引用。 一些手册用单引号显示它的原因是代码中由两个符号表示的 char 与字符串文字之间的差异。

有关更多说明,请参阅 this question

正确的代码是您自己声明的代码:

scanf("%f\n%f\n%s",&lati,&longi,info)