gets()和scanf()的区别

来源:百度知道 编辑:UC知道 时间:2024/05/20 06:01:43
#include<stdio.h>
void main()
{
char s[10],ch1,ch2;
int i;
printf("请输入字符串:");
gets(s);
//scanf("%s",s);
printf("Old,New char is:");
scanf("%c,%c",&ch1,&ch2);
for(i=0;s[i]!='\0';i++)
{
if(s[i]==ch1)
printf("%c",ch2);
else
printf("%c",s[i]);
}
}

字符替换函数
用gets()是对的 而用scanf()则不会产生变化 为什么

gets()函数可以读入空格,而scanf()不能

scanf :当遇到回车,空格和tab键会自动在字符串后面添加'\0',但是回车,空格和tab键仍会留在输入的缓冲区中。不能接受空格

gets:可接受回车键之前输入的所有字符,并用'\n'替代 '\0'.回车键不会留在输入缓冲区中

gets()用于读取字符串,用回车结束输入。
如果楼主打的是有空格的字符串,在scanf中只能取空格前面的。

区别(也就是要注意的地方)1.scanf()遇到空格认为输入结束..
2.如果前面使用了scanf() 后面使用gets()(或者getchar()) ,gets() 会接受上一个输入的 回车字符,也就是给gets() 赋值为回车.. 在中间加个getchar();来抵消回车就行..

gets是获取字符串,scanf是获取字符,两者本质的区别。

scanf遇空格会停止读入,gets直接读到回车为止