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

时间:2015-02-12 07:34:54

标签: c scanf

#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]");    
}

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

'\n'代替\n

格式说明符中的

,但没有用;它每次只输入一次。

这两者之间的区别是什么?scanf()如何处理它们?

1 个答案:

答案 0 :(得分:2)

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

当您破解此代码时:

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

......等等。

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

有关详细说明,请参阅this question

正确的代码就是你自己说过的代码:

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