今天用scanf输入字符串的时候,输出乱码,但是我如果指定写死了字符串就没有乱码
int main()
{
//1.不乱码情况,但是写死了
//char str[N]="I am a good boy";
//2.乱码情况
char str[N];
printf("请输入一条英文句子!\n");
scanf("%s",&str[N]);//或者这个适用于没有空格的字符串比如:daldjal93
//3.纠正这样用gets也可以获取空格而不会乱码
//gets(str);
}
总结
gets() 是专用的字符串输入函数,与 scanf() 相比,gets() 的主要优势是可以读取含有空格的字符串
gets() 是有缓冲区的,每次按下回车键,就代表当前输入结束了,gets() 开始从缓冲区中读取内容,这一点和 scanf() 是一样的。gets() 和 scanf() 的主要区别是:
1.scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。
2.gets() 认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。