下面的代码不能按预期工作,有人可以给我一些建议吗?for for语句中使用getchar()不能正常工作
#include <stdio.h>
int main(){
int i, k=0, j=0;
char hex[50], c;
for (i=0; (c=getchar()) != EOF && (c=getchar()) != '\n'; i++) {
hex[i] = c;
j++;
}
if (c == 'n') {
hex[i] = 'n';
i++;
}
hex[i] = '\0';
for (k=0; k<i; k++) {
printf("%c", hex[k]);
}
printf("\n%d %d %d\n", i, j, k);
return 0;
}
如果我输入:
abc
我想输出应该是:
abc
4 3 4
然而,在我的Xcode IDE输出为:
b
1 1 1
有人可以帮助我调试我的代码?
你能告诉我为什么c的类型必须是int吗?我将用十六进制[]来表示c值,这是char类型。 – user7241487
@ user7241487有必要与'EOF'进行比较。 'getchar'返回0..255和-1('EOF')。 255(''\ xFF''和'EOF')不应该混淆。 – BLUEPIXY
downvote的原因是什么? – BLUEPIXY