我的程序在C中反转字符串有什么问题?(What is wrong with my program reversing strings in C?)

编程入门 行业动态 更新时间:2024-10-26 10:27:38
我的程序在C中反转字符串有什么问题?(What is wrong with my program reversing strings in C?)

我想创建一个函数来反转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; }

我无法弄清楚为什么会出现分段错误。

I want to create a function to reverse a string in C. I found a couple pre-made on the internet but I wish to create mine. Here is the code:

#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; }

I can't figure out why I get a segmentation fault.

最满意答案

您的代码中存在多个错误,最重要的是从错误方向的链接偏移。 此外,字符串终止符缺少空间, 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

There were several errors in your code, the most significant being the offset from chaine in the wrong direction. Also, lack of space for a string terminator, and j ending prematurely.

#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; }

Program output

ruojnob

更多推荐

本文发布于:2023-07-31 06:26:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1341890.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:有什么   字符串   程序   wrong   reversing

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!