gpt4 book ai didi

c - 为什么这个 pangram 程序不起作用?

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

这是一个几乎正确的全字词程序,但我不明白为什么它不起作用?

int main() {

/* Enter your code here. Read input from STDIN. Print output to STDOUT */
char *a=malloc(256);
int first[26]={0},c=0,i=0,flag=0;
//printf("Enter string");
fgets (a, MAX_NAME_SZ, stdin);
while(a[c]!='\0')
{
first[a[c]-'a']++;
c++;
}

for(i=0;i<26;i++)
{
if(first[i]==0)
{
flag=1;
break;
}
}

if(flag==0)
{
printf("panagram");
}
else
{
printf("not panagram");
}

return 0;
}

最佳答案

您的代码中存在逻辑错误,因为您没有对用户输入进行任何输入验证和/或健全性检查。

在您的代码中,

 first[a[c]-'a']++;

如果a[c]不在[a, z]范围内,则尝试访问first数组中的无效内存位置。

即使用户输入 UPPER 大写字母或 空格 [] (逻辑上所有这些都应被视为有效输入),你的编程经验undefined behaviour通过访问越界内存。

为避免这种情况,请先检查 a[c] 值,然后再直接将其用作 first 数组的索引。

关于c - 为什么这个 pangram 程序不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28470471/

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