gpt4 book ai didi

c - 我的程序在 C 中反转字符串有什么问题?

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

我想创建一个函数来反转 C 中的字符串。我在互联网上找到了几个预先制作的函数,但我希望创建我的函数。这是代码:

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


char* inverseCarac(char* chaine){
if(chaine==0||*chaine==0) return NULL;

int j, i;
int taille=strlen(chaine);
char* inverse=malloc(taille*sizeof(char));

for(j=taille-1, i=0; j>0; j--, i++){
*(inverse+i)=*(chaine-j);
}

return inverse;

}

int main(void){
char* test="bonjour";
char* inv=inverseCarac(test);
printf("%s", inv);
return 0;
}

我不明白为什么会出现段错误。

最佳答案

您的代码中有几个错误,最重要的是从 chaine 的偏移方向错误。此外,缺少字符串终止符的空间,并且 j 过早结束。

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

char* inverseCarac(char* chaine){
if(chaine==0||*chaine==0) return NULL;

int j, i;
int taille=strlen(chaine);
char* inverse=malloc(taille+1); // add 1 for terminator

for(j=taille-1, i=0; j>=0; j--, i++){ // change j>0 to j >= 0
*(inverse+i)=*(chaine+j); // change -j to +j
}
inverse[taille] = '\0'; // write terminator
return inverse;
}

int main(void){
char* test="bonjour";
char* inv=inverseCarac(test);
printf("%s\n", inv);
return 0;
}

程序输出

ruojnob

关于c - 我的程序在 C 中反转字符串有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39496446/

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