gpt4 book ai didi

c - 使用 getchar 计算单词中字符数时的奇怪行为

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

我目前正在通过 K&R 工作,但在搜索网络、再次尝试和搜索更多内容后,我陷入了困境,我来到 stackoverflow 寻求帮助!

任务是创建一个直方图,聚合每个单词中的字母数,然后将信息显示为直方图。

我已经弄清楚了直方图部分,但是我在计算单词时遇到了问题。

当我输入几个单词然后按 Ctrl+D 发送 EOF,并打印每个字符输入的出现次数;我在 index[0] noramlly arround '15773951' 返回了一个很大的值

只是为了澄清我的代码将继续添加到 wc,该值用于计算字符数,直到找到空格、换行符或制表符。然后它将使用一个数组来存储每个单词大小出现的次数,方法是递增等于单词大小的索引位置。

int main(void){
int c, i, status, wc;
int numbers[array_size];
wc = 0; //used to count number of chars

//innitialize array
for(i=1; i<array_size; i++)
numbers[i] = 0;

/*start counting letters*/
while((c = getchar()) != EOF){
/*check if c is a space*/
if((c=' ')||(c='\t')||(c='\n')){
numbers[wc-'1']++;
wc = 0;
}else{
++wc;
}
}


printf("word size occured: ");
for(i=0;i<array_size;i++)
printf("%d\n", numbers[i]);

}

有代码,任何人都可以向我解释为什么这种情况一直发生这里还有一个输出示例:

word size occured: 15773951
0
0
0
0
0
0
0
0
0

最佳答案

好的,所以:

1.

// Here you subtract from wc the integer value of the 
// character '1' (which is ~49)
numbers[wc-'1']++;

应该是

numbers[wc-1]++;

2.

 // The array starts at index 1, ignoring the very first one ie. zero
for(i=1; i<array_size; i++)

应该是

 for(i=0; i<array_size; i++)

3.

 // Here you assign the value ' ' to the variable c, which is equivalent to do:
// if((' ')||('\t')||('\n')){ which is equivalent to do:
// if((' ' != 0)||('\t' != 0)||('\n' != 0)){ which is always true
if((c=' ')||(c='\t')||(c='\n')){

应该是

 if((c==' ')||(c=='\t')||(c=='\n')){

关于c - 使用 getchar 计算单词中字符数时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17283312/

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