![](/img/trans.png)
[英]Reverse String recursively in C with return and a putBack function
[英]How to reverse a string into a empty string recursively in c
我的作業有這個問題。 我應該將一個字符串遞歸轉換為另一個空字符串。 問題是該函數修改了原本不應該做的源字符串,只是將字符串向后復制到目標字符串。 我不明白為什么會這樣...
#include <stdio.h>
#include <string.h>
void
invert(const char *src, char dest[])
{
if(*src=='\0')
return;
else
{
invert(src+1, dest);
dest[strlen(src)-1]=*src;
}
}
int main(int argc, const char * argv[])
{
char dest[]="";
char src[]="";
printf("write a word: \n");
scanf("%s", src);
invert(src, dest);
dest[strlen(src)]='\0';
printf("the inversion of the word is: %s\n", dest);
return 0;
}
例如:寫尤利西斯=> sessesU和寫瓊斯=> seesJ \\ 377
問題在這里:
char dest[]="";
char src[]="";
您要為一個字符分配兩次-變量在堆棧上可能彼此相鄰,這就是為什么對一個字符進行錯誤寫入會覆蓋另一個字符的原因。
您應該為字符串分配足夠的存儲空間。 如果您確定程序的輸入不會超過例如1023個字節,那么兩個1k緩沖區應該很好:
char src[1024], dest[1024];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.