gpt4 book ai didi

c - 执行 C 程序时终端无响应

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:10 25 4
gpt4 key购买 nike

我不知道如何处理我在启动这个程序时遇到的问题:

int getline(char s[], int lim){
int c,i;

for (i=0; i<lim-1 && (c=getchar()) != EOF && c!='\n'; ++i)
s[i] = c;
if (c == '\n') {
s[i] = c;
++i;
}
s[i] = '\0';

到目前为止,它是 K&R 教科书练习 1-16 的字面副本。它将输入的所有字符存储在一个数组中,直到达到一定的固定大小,然后对所有这些字符进行计数。

    for (i=i; c!= EOF && c!='\n'; ++i);
if (c == '\n')
++i;

return i;
}

这是我添加的部分。我的问题是每当我尝试运行这个程序时,如果我输入的字符串比数组的范围长(如果我编写的代码控制),我最终会在 Windows 命令提示符中看到一个空白点(我可以不要输入任何内容,Ctrl+Z 或其他任何内容)。

发生了什么事?

最佳答案

for (i=i; c!= EOF && c!='\n';++i); 是一个无限循环。您没有读取任何新字符,也没有重置 c 的值。因此,如果程序运行到此代码并且 c 不是 EOF 也不是换行符,它将永远循环。

你可能想要类似的东西

for (i=i; (c=getchar())!= EOF && c!='\n'; ++i); 

while ((c=getchar())!= EOF && c!='\n') ++i;

关于c - 执行 C 程序时终端无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28261148/

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