Scanf()与\n和'\n';在格式说明符中提供

Scanf()与\n和'\n';在格式说明符中提供,c,scanf,C,Scanf,上面的代码按预期工作,但我通过反复试验找到了答案。这将以“回车”键作为分隔符接受三个输入。最初我提供: '\n'而不是\n 在格式说明符中,但这没有用;它每次只接受一个输入 这两者之间有什么区别,以及scanf()如何处理它们?因此您的代码中有一个scanf(“%f”\n“%f”\n“%s”,&lati,&longi,info) 当您分解此代码时: %f-预期浮动 ”-输入中需要一个文本” \n-预期换行 ”-输入中需要一个文本” 。。。等等 \n是换行符。无报价。 一些手册用单引号表示的原

上面的代码按预期工作,但我通过反复试验找到了答案。这将以“回车”键作为分隔符接受三个输入。最初我提供:

'\n'
而不是
\n

在格式说明符中,但这没有用;它每次只接受一个输入

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

因此您的代码中有一个
scanf(“%f”\n“%f”\n“%s”,&lati,&longi,info)

当您分解此代码时:

  • %f
    -预期浮动
  • -输入中需要一个文本
  • \n
    -预期换行
  • -输入中需要一个文本
。。。等等

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

有关更多解释,请参阅

正确的代码是您已经声明的代码:


scanf(“%f\n%f\n%s”、&lati和&longi,info)

因此您有一个
scanf(“%f”\n“%f”\n“%s”、&lati和&longi,info)
?@favoveretti是的,但它不工作,\n正在工作。
字符串中是一个字符文本。这意味着scanf期望接收输入上的
字符。我预计您不打算提供一个。@AlexBrown是的,我想,我会在给出每个输入后提供“\n”来测试它。为什么不让
scanf(“%f%f%s”,&lati,&longi,info)
您对此有什么担心?
\n
匹配任何空格序列(在这里是多余的)。要匹配文字换行符,需要%*1[\n]
#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]");    
}