strcpy给出了分段错误
下面是一个递归函数,用于将整数转换为字符串strcpy给出了分段错误,c,recursion,strcpy,C,Recursion,Strcpy,下面是一个递归函数,用于将整数转换为字符串 char* int_to_word(int word_int){ static char new[2]; char alphabet[26]={"abcdefghijklmnopqrstuvwxyz"}; new[0]=alphabet[word_int%27-1]; //new[1]='\0'; if(word_int/27==0){ return new; } static c
char* int_to_word(int word_int){
static char new[2];
char alphabet[26]={"abcdefghijklmnopqrstuvwxyz"};
new[0]=alphabet[word_int%27-1];
//new[1]='\0';
if(word_int/27==0){
return new;
}
static char *word;
strcpy(word,strcat(int_to_word(word_int/27),new));
return word;
}
我在strcpy(word,strcat(int_to_word(word_int/27),new)行中遇到了一个分段错误代码>当
word\u int
>26时。据我所知,没有理由不起作用。我最好的猜测是,在复制到word
之前,我不知何故需要分配word
,但将初始值设定项更改为static char*word=(*char)malloc(100)
没有帮助。word指向什么内存?您从未初始化word
,您需要使用malloc()
为其分配内存。将静态变量与递归函数一起使用是行不通的。您将尝试在相同的字符串之间进行复制。您似乎试图通过使用静态变量来绕过无法返回本地数组的事实。但这会导致一个新问题:每次调用函数时,都会覆盖从不同调用返回的数组代码>不是你想要的,是一个你可能想要的char foo[]=“bar”代码>