gpt4 book ai didi

c - 程序不等待第二次读取

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

这是一个更大的程序的一部分,但让我发疯的是程序不等待从字符串 s 中的标准输入读取某些内容(它只是将 null 放入字符串 s),但是如果我先读取字符串 s,然后再读取字符 c,程序就可以正常工作。问题是我需要按照这个特定的顺序读取数据。我该如何解决?

char s[100],c;
printf("enter character:\n");
c=getchar();
printf("enter string text:\n");
fgets(s,101,stdin);
uint8_t s_len = strlen(s) - 1;
s[s_len] = '\0';
printf("i have read %s\n",s);

最佳答案

当您为第一个字符按下回车键时,实际的换行符仍留在输入缓冲区中。此换行符随后由 fgets 调用读取。

您可以通过几种不同的方法来解决这个问题。第一个是添加一个虚拟的 getchar 调用,以获取换行符。这样做的缺点是,如果您在 Windows 上,换行符实际上是两个字符。

另一种解决方案是对第一个字符也使用 fgets,然后使用例如sscanf 提取字符。

关于c - 程序不等待第二次读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15729288/

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