gpt4 book ai didi

c - 输入缓冲区获取输入,C 编程

转载 作者:行者123 更新时间:2023-11-30 14:44:53 25 4
gpt4 key购买 nike

我正处于 C 编程的第一步,我遇到了一个无法找到解决方案的任务。
任务很简单:从用户那里获取一个角色。
之后,您会收到来自用户的字符串,直到用户键入 *​​ 字符。
然后打印用户键入第一个字符的次数。

当我设置最大输入大小为 255 字节(#define SIZE 255)时,我能够使用 char [SIZE] 解决问题。
尽管如此,我的老师告诉我,虽然解决方案运行良好,但这不是练习的目的,而且我不能假设最大字符串大小。

他要求我们使用输入缓冲区。
练习中未使用动态内存分配,仅允许使用 stdio.h 库。

我读了很多关于输入缓冲区的内容,但我仍然没有找到解决这个练习的可能性 - 如何在不知道其大小的情况下从用户那里吸收值(value)?

我很高兴获得有关如何正确使用输入缓冲区的帮助和提示。
或者更集中的是,如何将值(字符串)输入到输入缓冲区中,然后分别遍历该字符串中的每个字符并进行处理。

谢谢

最佳答案

无需存储所有字符。一旦你读完一个字符,你就可以把它扔掉,只增加一个计数器。像这样的事情:

#include <stdio.h>

int main() {
char c, first;
int counter=0;
printf("Enter first character: ");
scanf("%c", &first);
do {
scanf("%c", &c);
if(c == first)
counter++;
} while (c != '*');
printf("You entered '%c' %d times\n", first, counter);
}

输出:

Enter first character: a
aaaaa*
5

Enter first character: a
aabbaa*
You entered 'a' 4 times

注意:

正如评论中所指出的,scanf 对于此类事情来说不是一个好工具。我建议不要使用它,除非您知道它是正确的工具。但这不是重点。这里的重点是向您展示您不需要存储整个输入缓冲区。如果您想查看替代输入法(正如 William Pursell 在评论中建议的那样),您可以查看 fgetcgetcgetchar 用于读取单个字符。 fread 也是您应该熟悉的工具。

关于c - 输入缓冲区获取输入,C 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53361420/

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