gpt4 book ai didi

c - 我的程序被锁定了,似乎没有做它应该做的事情。我做错了什么?

转载 作者:行者123 更新时间:2023-11-30 15:20:04 25 4
gpt4 key购买 nike

我是 C 编程新手,我准备学习字符串和数组。我最新的挑战是读取一个字符串,计算每个字母的频率并输出这些字母,包括非字母。

我已经编写了该程序,但它要么锁定,要么停止。我无法让它开始计数。我哪里出错了?

注意:我的讲师对语法有一些其他人不一定认同的特殊观点。我将坚持使用让我的讲师满意的语法,所以请不要选择“return (0);”在主函数的末尾。

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

const int COUNT = 27;
const int STRSIZE = 100;

counter[c]++;
c++;
}
else
if((letterfreq[i] < 'a') || (letterfreq[i] > 'z'))
{
counter[26]++;
}
}
}

return;
}

void printFreq(int counter[], int COUNT)
{
int c;

in the string.\n", counter[26]);

return;
}

char promptReset(char reset)
{
printf("Would you like to calculate the letter frequency of another string? (Y/N)\n");
scanf("%c%*c", &reset);

tolower(reset);

return(reset);
}

int main()
{

最佳答案

在您的代码中,

 tolower(letterfreq[STRSIZE]);

超出了分配的内存,进而调用 undefined behaviour 。请记住,C 数组索引是基于 0 的。

也就是说,

  1. 我不明白这里整个声明的意义。也许您想再看一下 tolower(http://linux.die.net/man/3/tolower) 的手册页。

  2. 无需将 COUNTSTRSIZE 作为参数传递给函数。

关于c - 我的程序被锁定了,似乎没有做它应该做的事情。我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30211457/

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