原题链接:[编程入门]字符串分类统计
scanf()和gets()都可以用来从标准输入接收一个字符串,区别如下:
get()函数:
1)gets()从标准输入设备读取字符串,以回车结束读取,使用'\0'结尾,回车符'\n'被舍弃没有遗留在缓冲区。
2)可以用来输入带空格的字符串。
3)可以无限读取,不会判断上限,因此使用gets不安全,可能会造成溢出。
scanf()函数:
1)scanf()以 空格 或 回车符 结束读取,空格 或 回车符 会遗留在缓冲区。
2)不能直接输入带空格的字符串。
注意:scanf()函数如何才能输入带空格的字符串。
scanf("%[^\n]", a); //%[]输入字符集, [^\n] 表示除了'\n'之外的字符都接收,即可以接收空格,这个可以用来输入带空格的字符串。(《C和指针》P310)
代码如下,仅供参考。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include <stdio.h> #include <string.h> #define MAX 256 int main() { char str[MAX]; //1 用gets函数接收从标准输入中输入的字符串 //gets(str); //2 用scanf接收一个字符串,下列方式可以接收空格 scanf ( "%[^\n]" , str); int len = strlen (str); int i; int num = 0; int abc = 0; int space = 0; int other = 0; for (i = 0; i < len; i++) { if (str[i] <= '9' && str[i] >= '0' ) num++; else if (str[i] <= 'z' && str[i] >= 'a' ) abc++; else if (str[i] == ' ' ) space++; else other++; } printf ( "%d %d %d %d\n" , abc, num, space, other); return 0; } |
8 分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复