scanf输入时%s的方式,会忽略缓冲区开头的空白字符。所以有些%c读取会出错的地方用%s不会出错,因为%c会读取那个开头的空白字符。
//举个例子
#include<cstdio>
#include<cstring>
int main() {
char a[100],b[100];
scanf("%s",a);
scanf("%s",b);
printf("a=%s,str_len=%d\nb=%s,str_len=%d",a,strlen(a),b,strlen(b));
return 0;
}
//输入,注意中间那么多空格。
aaaaa bbbbb
//输出
a=aaaaa,str_len=5
b=bbbbb,str_len=5
本文探讨了在C语言中使用scanf函数时,%s与%c格式符的区别,特别是%s如何忽略缓冲区开头的空白字符,导致%c在某些情况下可能读取到意外的空白字符。
2312

被折叠的 条评论
为什么被折叠?



