gpt4 book ai didi

c - 当我尝试运行此代码时,cmd 关闭

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

程序应该接收一个字符串,然后检查每个字母被提及的频率。

到目前为止我已经做了这么多(在这个阶段我只会检查字母A)

int main(int argc, char const *argv[])
{
int i=0;
int l,k;
int r=10;
char list[10][10] ;
/* recieve a strng*/
char str[10] ;
fgets(str, 10, stdin);
str[10] = 0;

/*initialise list[] to -'s */
for (l = 0; l < 10; l++) {
for(k=0; k<10; k++) {
list[l][k]='-' ;
}
printf("\n");
}

/*checks if the letter== "A" if yes replace with * */
for ( i = 0; i < 10 ; ++i) {
if (str[i]== 97 ) {
list[r][0]='*';
r--;
}
}

/*print the second list[] */
for (l = 0; l < 10; l++) {
for(k=0; k<10; k++) {
printf("%c ", list[l][k]);
}
printf("\n");
}
return 0;
}

在添加读取字符串代码之前我已经测试过它并且它有效,但这不是我想要的:/

char list[10];
fgets(str, 10, stdin);
str[10] = 0;

有什么想法我应该集中精力让它再次发挥作用吗?我究竟做错了什么?

最佳答案

据我所知,问题在于

 list[r][0]='*';

这里,r的值为10,即出界访问。它调用undefined behavior .

请记住,C 数组使用基于 0 的索引。所以,对于像这样的数组

 int arr[10] = {0};

有效索引为 0 到 9。

除此之外,使用字母的直接 ASCII 值,例如 if (str[i] == 97 ) 并不是一种非常可移植的方法。您应该使用 if ( str[i] == 'A') 以获得更好的效果。

也就是说,我不太确定您的代码的逻辑,从任何角度来看,它都没有达到您想要的目的。

关于c - 当我尝试运行此代码时,cmd 关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37238400/

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