我想實現一個代碼,它使用了一個名爲reverse的函數,它接受一個字符串並返回一個與舊字符串相反的新字符串。據我所知,函數本身可以正常工作 - 也就是說,我測試了一下,看看反向字符串:new字符串是否具有正確的值,並且它是否正確。但是,當我嘗試打印這個反向字符串後,它已被返回到主函數我得到一個錯誤的訪問代碼。有沒有人有任何想法?這是我的代碼:函數可以返回字符串作爲它們的輸出嗎?
#include <stdio.h>
#include <string.h>
char reverse(char *string) {
char newstring[50]; //reversed string to be returned to the main function
int size = strlen(string);
int index = 0;
for (index = 0 ; index < size ; index++) {
newstring[index] = *(string+size-index-1); //creates a new string that is the reverse of the old string
}
return newstring; //reurns the new string
}
int main(int argc, const char * argv[]) {
char string[50];
printf("Please enter a string you wish to reverse:\n");
scanf("%49s", string); // user enters a string of maximum length 50
int size = strlen(string);
char *reverse_string;
reverse_string = reverse(string); // sets a pointer called reverse_string to the pointer returned by the reverse function
for (int index = 0 ; index < size ; index++) {
printf("%c", *(reverse_string+index));// prints the reversed string value by value
}
return 0;
}
函數可以返回字符串的地址,而不是字符串本身。 – chux 2014-12-05 04:05:03
由於'newstring'是一個局部變量,所以返回'newstring'是一個問題。 – chux 2014-12-05 04:06:28
函數可以返回指針。 – 2014-12-05 04:26:04