关于指针代替数组,找出一行文字中各类字符的有关问题
关于指针代替数组,找出一行文字中各类字符的问题
这是正确的代码
输入:Today is 2005/1/1
输出:1 6 2 6 2
这是错误的代码
请问错误代码中的注释情况如何理解?
------解决方案--------------------
[Quote=引用:]
int s[50] 这个是 int 类型,怎么可以用 字符串读了。。。
int类型不是以'\0'结尾的!
------解决方案--------------------
你第一个对了因为用了while 循环读取缓冲区的字符
while ((s[i]=getchar()) != '\n')
{
i++;
}
------解决方案--------------------
getchar一次读取一个字符,字符可以先在缓冲区中,如何getchar每次读一个字符。
scanf一次读取一行,所以得读到char[]数组中。
------解决方案--------------------
这是正确的代码
- C/C++ code
#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; }
输入:Today is 2005/1/1
输出:1 6 2 6 2
这是错误的代码
- C/C++ code
#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; }
请问错误代码中的注释情况如何理解?
------解决方案--------------------
[Quote=引用:]
int s[50] 这个是 int 类型,怎么可以用 字符串读了。。。
int类型不是以'\0'结尾的!
------解决方案--------------------
你第一个对了因为用了while 循环读取缓冲区的字符
while ((s[i]=getchar()) != '\n')
{
i++;
}
------解决方案--------------------
getchar一次读取一个字符,字符可以先在缓冲区中,如何getchar每次读一个字符。
scanf一次读取一行,所以得读到char[]数组中。
------解决方案--------------------