下面的代码不按预期工作,有人能给我一些建议吗?

#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

有人能帮我调试代码吗?

最佳答案

像这样修理

#include <stdio.h>

int main(void){
    int i, j, k, c;//The type of c must be int.
    char hex[50];

    for (j = i = 0; i < sizeof(hex)-1 && (c=getchar()) != EOF && c != '\n'; i++, j++) {//The input part should be one.
        hex[i] = c;
    }
    if (c == '\n') {//n is typo as \n
        hex[i] = '\n';
        i++;
    }
    hex[i] = '\0';

    for (k = 0; k < i; k++) {
        printf("%c", hex[k]);
    }
    printf("%d %d %d\n", i, j, k);//newline already include.
    return 0;
}

关于c - 在for语句中使用getchar()不能按预期工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41339863/

10-09 08:45