c语言获取用户输入字符串是scanf和gets的区别
2017-11-01 12:05
405 查看
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 <stdio.h> 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 <stdio.h> 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 <stdio.h> 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! 接受了空格符,而没有像上一个程序那样分成了两个字符串!所以如果要读入一个带空格符的[b]字符串时因该用gets(), 而不宜用scanf()![/b] |
相关文章推荐
- c语言获取用户输入字符串是scanf和gets的区别详解
- c语言获取用户输入字符串是scanf和gets的区别
- c语言获取用户输入字符串是scanf和gets的区别
- scanf(“%s",)与gets()输入字符串的区别,以及与getchar()吸收回车键的搭配
- C语言中字符串输入中scanf与gets函数的区别
- 浅谈scanf,getchar,gets分别输入字符串有什么区别
- 字符串输入函数,scanf,gets,fgets的用法和区别
- gets()与scanf()对于输入字符串的区别2024
- C语言中scanf函数和gets函数在输入字符串时的区别
- gets与scanf_C语言中两种字符串输入方法比较
- scanf( )和gets如何用C语言从键盘上输入并打印一串字符串的比较
- C语言的那些事——scanf()和gets()在字符串中出现空格时的区别比较
- scanf和gets获取字符串时的区别
- 【C语言天天练(十五)】字符串输入函数fgets、gets和scanf
- scanf和gets获取字符串时的区别
- 【C语言天天练(十五)】字符串输入函数fgets、gets和scanf
- C语言中输入函数(scanf()、fgets()和gets())的区别详解
- C语言:scanf("%s",a)和gets(a)的区别(a[i]是字符串数组)
- C语言中scanf()与gets()在输入字符串的差别
- scanf和gets获取字符串时的区别