关于指针代替数组,找出一行文字中各类字符的问题
这是正确的代码
#include <stdio.h>int main(){ int s[50], *p, i; int upp, low, spa, dig, oth; i = upp = low = spa = dig = oth = 0; printf("Input string: \n"); while ((s[i]=getchar()) != '\n') { i++; } p = s; while (*p != '\n') { if (*p>='A' && *p<='Z') { upp++; } else if (*p>='a' && *p<='z') { low++; } else if (*p == ' ') { spa++; } else if (*p>='0' && *p<='9') { dig++; } else { oth++; } p++; } printf("upp = %d\n", upp); printf("low = %d\n", low); printf("spa = %d\n", spa); printf("dig = %d\n", dig); printf("oth = %d\n", oth); return 0;}#include <stdio.h>int main(){ int s[50], *p; int upp, low, spa, dig, oth; upp = low = spa = dig = oth = 0; printf("Input string: \n"); scanf("%s", s); //为什么不能用字符串输入格式 p = s; while (*p++ != '\n') //我把上面改成正确代码的格式,这里用 *p++ //发现输出变成了:0 6 2 6 3 { if (*p>='A' && *p<='Z') { upp++; } else if (*p>='a' && *p<='z') { low++; } else if (*p == ' ') { spa++; } else if (*p>='0' && *p<='9') { dig++; } else { oth++; } } printf("upp = %d\n", upp); printf("low = %d\n", low); printf("spa = %d\n", spa); printf("dig = %d\n", dig); printf("oth = %d\n", oth); return 0;}