A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

原题:
有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、文小写字母、数字、空格和其它字符的个数

代码如下
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int i,j;
  5.     int upp,low,gid,spa,oth;
  6.     char text[3][80];
  7.     upp=0;low=0;gid=0;spa=0;oth=0;
  8.     for (i=0;i<3;i++)
  9.     {
  10.         gets(text[i]);   /*text[i]表示第i行*/
  11.         for (j=0;j<80 && text[i][j]!='\0';j++)
  12.         {
  13.             if (text[i][j]>='A' && text[i][j]<='Z')
  14.                 upp++;//大写字母+1
  15.             else  if (text[i][j]>='a' && text[i][j]<='z')
  16.                 low++;//小写字母+1
  17.             else  if (text[i][j]>='0' && text[i][j]<='9')
  18.                 gid++;//数字+1
  19.             else  if (text[i][j]==' ')
  20.                 spa++;//空格+1
  21.             else oth++;//其他字符+1
  22.         }
  23.     }
  24.     printf("upp=%d,low=%d,gid=%d,spa=%d,oth=%d\n",upp,low,gid,spa,oth);
  25. }
复制代码
其中在我编译的时候提示gets()存在安全问题,那么应该用什么函数来代替呢?
另外
  1. for (j=0;j<80 && text[i][j]!='\0';j++)
复制代码
这句怎么理解?
麻烦大虾解惑一下!

2 个回复

倒序浏览
gtes也能用,不出警告用fgets
text[i][j]!='\0' 二维数组的第[i][j]这个不是\0,就是不是最后一个  字符串的最后一个是\0
"abc"='a' 'b' 'c' '\0'

回复 使用道具 举报
王亚辉 发表于 2015-4-9 21:35
gtes也能用,不出警告用fgets
text[j]!='\0' 二维数组的第[j]这个不是\0,就是不是最后一个  字符串的最后一 ...

太厉害了,忘记"\0"就是代表字符串结束了。
这下明白了!谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马