gpt4 book ai didi

自定义获取行输入函数

转载 作者:行者123 更新时间:2023-12-02 06:46:13 24 4
gpt4 key购买 nike

我正在阅读 K&R 书,有点卡住了。

下面的问题是什么?

void getInput(int* output) {
int c, i;
for(i=0; (c = getchar()) != '\n'; i++)
output[i] = c; // printf("%c", c) prints the c value as expected
output[++i] = '\0';
}

当我运行程序时,它永远不会跳出循环,我必须按 Ctrl+C 才能退出。但是,如果我用 printf("%c", c); 替换第五行,它会在按下回车键并创建新行后打印出所有输入。

最佳答案

What is wrong with the following?

1. void getInput(int* output) {

当您想将内容存储在字符数组中时,为什么输入参数是 int*?大概是

void getInput(char* output) {

更好。

此外,您如何知道输出指针指向您拥有足够内存来写入用户输入的某个位置?也许您必须将最大缓冲区长度作为额外参数以避免像 PW pointed out 那样出现缓冲区溢出错误。

5.   output[++i] = '\0';

i 已经在 for 循环中增加了额外的时间,所以你可以这样做:

output[i] = '\0';

除此之外,程序运行良好并输出我们输入的内容,直到返回。

FWIW,我通过这样调用它来测试它:

 int main(void)
{
char o[100];
getInput(o);
printf("%s", o);
return 0;
}

关于自定义获取行输入函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/224562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com