小编Luk*_*eFi的帖子

使用 getchar 输入字符串

我试图将一个字符串读入一个由用户选择的长度的字符数组。问题是 getchar() 不会停止阅读,直到用户根据我的代码按 Enter 手动输入换行符。我已经阅读了其他人的帖子,我明白为什么我不能这样做,这与我的作业讲义完全矛盾。

int chPrompt(int nchars);
void strInput(char str[], int nchars);

int main(void) {
    int nchars = chPrompt(nchars);
    char str[nchars];

    strInput(str, nchars);

    return 0;
}

int chPrompt(int nchars) {
    printf("How many chars do you need to input? >");

    return scanf("%i", &nchars);
}

void strInput(char str[], int nchars) {
    int i = 0;

    while((str[i] = getchar()) != '\n') {
        if(i > nchars-1)
            break;
        i++;
    }
    str[i] = '\0';

    //Troubleshooting
    printf("%s %d", str, strlen(str));
}
Run Code Online (Sandbox Code Playgroud)

这是讲义上的内容:

使用我们讨论过的技术从键盘输入一个字符串(包括空格)(使用 getchar(),而不是 gets() 、 …

c string while-loop getchar

4
推荐指数
1
解决办法
3万
查看次数

标签 统计

c ×1

getchar ×1

string ×1

while-loop ×1