gpt4 book ai didi

c - 使用 cstdio 读取键盘输入

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

下面的 C 代码有什么问题? (更新)

int nfds = 0;
char c[2] = " ";
char ans[2] = " ";

printf("Test p or s [p,s]: p? ");
ans[0] = (char)getchar();
if (ans[0] != '\n')
{
ans[1] = '\0';
printf("ans = %s\n", ans);
}
else
ans[0] = '\0';

/* FIXME: answering 's' -> nfds is never read */
printf ("Choose [0, 1, 2, 3]: 0? ");
c[0] = (char)getchar();
if (c[0] != '\n')
{
c[1] = '\0';
nfds = strtol(c, NULL, 10);
}
else
c[0] = '\0'
printf( "nfds=%d\n", nfds);

回答“return”有效,但回答“s+return”不会在 print("Choose...") 处停止并继续,就好像已经给出了“return”一样?

也许更好的解决方案是:首先读取 ans 中的一个字符/字符串,默认值:"return" in char/string='s'/"s"ask下一个问题读入整数nfds,默认:"return"

最佳答案

首先:

c[2] = '\n';

您的两个元素数组中没有 c[2]ans 也是如此。

第二个:

c[1] = getchar();
...
nfds = atoi(c);

您的数组有两个元素,一个字符串必须以 null 结尾。通过覆盖 c[1] 然后 c 数组不能容纳字符串。

还要注意 getchar返回 int 而不是 char,如果您必须将其返回值与 EOF 进行比较,这一点很重要。

还有 atoi函数不能做错误检查,你应该使用strtol .

关于c - 使用 cstdio 读取键盘输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13941727/

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