重读gets()与is函数的用法

这是从百度百科上查找的资料:

gets():

从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。

所以用gets来输入字符串时换行符被读取(不留在缓冲区),并被系统转化为null值

所以,下图是错误的用法:

相比之下,而getchar()可以将换行符作为内容:改变一下后为

#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
char c;
int i = 0, j = 0, k = 0, l = 0,m=0;
printf("请输入一个长度不超过200的字符串: \n");
while ((c=getchar())!= '\n')
{
if(isalpha(c))
j++;
if(isdigit(c))
k++;
if(isspace(c))
l++;
if(ispunct(c))
m++;
}
printf("该字符串的字母个数:%d,数字个数:%d,空格个数:%d,标点个数:%d", j,k,l,m);
return 0;
}

 

不过从这个程序中还是有许多函数可以借鉴:

1.isalpha()

用法:头文件加入#include (C语言使用<ctype.h>)

功能:判断字符ch是否为英文字母,当ch为英文字母a-z或A-Z时,则函数返回不是1的值,否则返回0

同理:

isupper
原型:extern int isupper(int c); 
头文件:<ctype.h>
功能:判断字符c是否为大写英文字母 
说明:当参数c为大写英文字母(A-Z)时,返回非零值,否则返回零。 
附加说明: 此为宏定义,非真正函数。 
islower
islower(测试字符是否为小写字母) 

2.isdigit

原型:extern int isdigit(char c);
用法:#include <ctype.h>
功能:判断字符c是否为数字
说明:当c为数字0-9时,返回非零值,否则返回零。
附加说明 此为宏定义,非真正函数。 

3.isspace

表头文件 
#include<ctype.h>
定义函数 
int isspace(int c)
函数说明 
检查参数c是否为空格字符,也就是判断是否为空格(' ')、水平定位字符
('\t')、归位键('\r')、换行('\n')、垂直定位字符('\v')或翻页('\f')的情况。[1]
返回值 
若参数c为空格字符,则返回TRUE,否则返回NULL(0)。
附加说明 
此为宏定义,非真正函数。

4.ispunct

表头文件
#include<ctype.h>
定义函数
int ispunct(int c)
函数说明
检查参数c是否为标点符号或特殊符号。返回TRUE也就是代表参数c为
非空格、非数字和非英文字母。

posted @ 2014-12-03 19:10  BB的想法  阅读(470)  评论(0编辑  收藏  举报