原题链接:[编程入门]字符串分类统计
scanf()和gets()都可以用来从标准输入接收一个字符串,区别如下:
get()函数:
1)gets()从标准输入设备读取字符串,以回车结束读取,使用'\0'结尾,回车符'\n'被舍弃没有遗留在缓冲区。
2)可以用来输入带空格的字符串。
3)可以无限读取,不会判断上限,因此使用gets不安全,可能会造成溢出。
scanf()函数:
1)scanf()以 空格 或 回车符 结束读取,空格 或 回车符 会遗留在缓冲区。
2)不能直接输入带空格的字符串。
注意:scanf()函数如何才能输入带空格的字符串。
scanf("%[^\n]", a); //%[]输入字符集, [^\n] 表示除了'\n'之外的字符都接收,即可以接收空格,这个可以用来输入带空格的字符串。(《C和指针》P310)
代码如下,仅供参考。
#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; }
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复