首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

这里是不是可以改成这样?该如何处理

2012-06-12 
这里是不是可以改成这样?C/C++ code#include stdio.hint main(void){int i,j,upp,low,dig,spa,othchar

这里是不是可以改成这样?

C/C++ code
#include <stdio.h>int main(void){    int i,j,upp,low,dig,spa,oth;    char text[3][80];    upp = low = dig = spa = oth = 0;    for(i = 0; i < 3; i++)    {        printf("\n please input line %d:\n",i+1);        gets(text[i]);        for(j = 0; j < 80 && text[i][j] != '\0';j++)            /* 这里能不能改成for(j = 0; text[i][j] != '\0';j++)*/        {            if(text[i][j] >= 'A' && text[i][j] <= 'Z')                upp++;            else if(text[i][j] >= 'a' && text[i][j] <= 'z')                low++;            else if(text[i][j] >= '0' && text[i][j] <= '9')                dig++;            else if(text[i][j] == ' ')                spa++;            else                oth++;        }    }    for(i = 0; i < 3; i++)    {        printf("%s\n",text[i]);    }    printf("upper case: %d\n",upp);    printf("lower case: %d\n",low);    printf("digit: %d\n",dig);    printf("space:%d\n",spa);    printf("other:%d\n",oth);    return 0;}


[解决办法]
完全可以。。
[解决办法]
如果你输入的字串多于80会越界,C不提倡用gets();
[解决办法]
探讨
求5楼解释!

[解决办法]
7楼正解,如果数组没存储满的话,会自动在其后加'\0',但是已经满了,所以并没有在其后加结束符,而字符串输出的时候是到'\0'才结束输出的。
[解决办法]
因为后面没有结束符'/0'。
[解决办法]
至于楼主的程序就算越界也可以输出,那是因为字符数组输出的时候是以指针的形式而非数组,如果溢出之后用for(i=0;i<80;i++)单个输出数组,溢出部分就直接去掉了。

热点排行