gpt4 book ai didi

c - 如何避免以下程序的段错误?

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

#include<stdio.h>

int fcount(char ch, char *a){
if(*a == '\n'){
printf("d");
return 0;
}
else
if(*a == ch){
printf("b");
return 1 + fcount(ch, a++);
}
else
if(*a!=ch){
return fcount(ch, a++);
}
}

int main(){
char *s;
int c = 0, i;
printf("Enter anything you wish\n");
scanf(" %[^\n]s",s);
for(i = 97; i <= 122; i++){
c = fcount(i, s);
if(c != 0)
printf("[%c] %d\n", i, c);
}
}

这是我计算给定文本行中每个字符的频率的逻辑但程序似乎没有显示预期的输出

我得到的是这样的:段错误(核心已转储)请给我一些建议!

最佳答案

您在 scanf 中传递的指针值未初始化。访问该垃圾值会调用未定义的行为。

分配一些内存,然后将其传递给 scanf

您可以简单地使用char s[10]。或者您可以动态分配它。

s = malloc(sizeof(char)*10);
if( s == NULL){
fprintf(stderr,"%s"<"Error in malloc");
exit(1);
}

..

free(s);

关于c - 如何避免以下程序的段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47229194/

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