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)
#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)