c语言获取用户输入字符串是scanf和gets的区别 |
您所在的位置:网站首页 › linux编程c语言如何接受键盘字符串写入到一个文件中 › c语言获取用户输入字符串是scanf和gets的区别 |
解释 gets(s)函数与 scanf("%s",&s) 相似,但不完全相同,使用scanf("%s",&s) 函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。 1.scanf() 所在头文件:stdio.h 语法:scanf("格式控制字符串",变量地址列表); 接受字符串时:scanf("%s",字符数组名或指针); 2.gets() 所在头文件:stdio.h 语法:gets(字符数组名或指针); 两者在接受字符串时: 1.不同点: scanf不能接受空格、制表符Tab、回车等; 而gets能够接受空格、制表符Tab和回车等; 2.相同点: 字符串接受结束后自动加'\0'。 例1: #include int main() { char ch1[10],ch2[10]; scanf("%s",ch1); gets(ch2); return 0; } 依次键入asd空格fg回车,asd空格fg回车,则ch1="asd\0",ch2="asd fg\0"。 程序2: #include int main() { char str1[20], str2[20]; scanf("%s",str1); printf("%s\n",str1); scanf("%s",str2); printf("%s\n",str2); return 0; } 程序的功能是读入一个字符串输出,再读入一个字符串输出。可我们会发现输入的字符串中不能出现空格,例如: 测试一输入: Hello word(enter) 输出: Hello world! 程序3: #include int main() { char str1[20], str2[20]; gets(str1); printf("%s\n",str1); gets(str2); printf("%s\n",str2); return 0; } 测试: Helloworld! [ 输入 ] Helloworld! [ 输出 ] 12345 [ 输入 ] 12345 [ 输出 ] 【分析】显然与上一个程序的执行情况不同,这次程序执行了两次从键盘的读入,而且第一个 字符串 取了 Helloworld! 接受了空格符,而没有像上一个程序那样分成了两个 字符串 !所以 如果要读入一个带空格符的字符串时因该用gets(), 而不宜用scanf()! |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |