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语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:909 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:1052 |
C语言程序设计教程(第三版)课后习题5.7 (Java代码)浏览:910 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:760 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:672 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:913 |
数对 (C语言代码)浏览:762 |
简单的a+b (C语言代码)浏览:1024 |
字符逆序 (C语言代码)浏览:675 |
DNA (C语言代码)浏览:837 |