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