gpt4 book ai didi

c - 如何使用fgets读取和统计字符

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

假设我想从标准输入中计算字符 abcdef...。

代码:

int string[100] = "";
int a_count = 0...

while(fgets(string, sizeof(string), stdin))
{
for(int y = 0; y < 100; y ++)
{
if(string[y] == 'a') a_count++;
if(string[y] == 'b') b_count++;
...and so on...
}
//here I reset the string to empty.
}

上面的代码工作不正确(比预期的要多),我在哪里犯了逻辑错误?

最佳答案

问题是您不仅要计算字符串中的字符数,还要计算整个缓冲区中的所有垃圾。您不想这样做。循环直到字符串结束。

此外,您可以用简单的表/数组查找替换巨大的链式 if,如下所示:

int counts[1 << CHAR_BIT] = { 0 };

while (fgets(buf, sizeof(buf), stdin) != NULL) {
const char *p = buf;
while (*p != 0) {
counts[*p++]++;
}
}

然后,最后,您可以按如下方式检索特定字符的计数:

printf("'a': %d occurrences\n", counts['a']);

等等

关于c - 如何使用fgets读取和统计字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17515497/

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