gpt4 book ai didi

c - 用户在逐个字符扫描的字符串中无限输入

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

我正在尝试创建一个程序来计算字符的频率并将其与字符一起打印。

但是,对于给定的字符串,我的程序正在无限输入最后一个字符。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct value
{
long long as;
long long k;
};

int main()
{
long long count[128] = {0};
char c;
struct value max;
max.k = 0; max.as = -1;

// Upto Here was only initialization.

while(1)
{

scanf("%c",&c);
printf("%c",c);
if(c!='\n')
{
count[c]++;
if(max.as<count[c])
{
max.as = count[c];
max.k = c;
}
if(max.as==count[c]&&max.k<c)
{
max.k = c;
}
}
else break; // Apparently this is never executed.
}

printf("\n%c %lld",(char)(max.k),max.as);
}

就像输入“masaka”一样,这里的输出为“masakaaaaaaaaaaaaaaaaaa”,其中打印 a 直到达到输出限制。

为什么会出现这种情况?

最佳答案

如果输入中没有换行符,您的程序将循环,因为它不检查 EOF。

scanf() 如果在解析任何输入之前到达文件末尾,将返回 EOF

while(1)
{

int result = scanf("%c",&c);
if (result == EOF || result == 0) {
break;
}
printf("%c",c);
if(c!='\n')
{
count[c]++;
if(max.as<count[c])
{
max.as = count[c];
max.k = c;
}
if(max.as==count[c]&&max.k<c)
{
max.k = c;
}
}
else break; // Apparently this is never executed.
}

关于c - 用户在逐个字符扫描的字符串中无限输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52689568/

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