函数可以返回字符串作为其输出吗?

标签 c string function pointers c-strings

我正在尝试实现一个代码,该代码使用一个名为“reverse”的函数,该函数接受一个字符串并返回一个与旧字符串相反的新字符串。据我所知,该函数本身工作正常 - 即我测试了反转字符串:新字符串是否具有正确的值,并且确实如此。然而,当我在返回主函数后尝试打印这个反向字符串时,我得到了错误的访问代码。有人有什么想法吗?这是我的代码:

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

最佳答案

您需要更改函数的声明,以便它返回 char* 而不仅仅是 char。在您的主循环中,您当前正在将一个字符分配给reverse_string而不是一个char*。

关于函数可以返回字符串作为其输出吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27308559/

相关文章:

c - 使用 UDP 套接字通过 connect()ing 获取我自己的 IP 地址?

c - 使用多字符定界符解析字符串并在 c 中的第二次调用中获得垃圾数据以及结果

java - 当我尝试使用 .getText() 时,JTextField 想成为最终结果

java - 在Java中将String转换为double

c - 二进制搜索以获取第一个整数的位置 >= 搜索到的整数

c - 奇怪的 "half to even"不同语言的舍入

c - 程序不会退出第一个 for 循环,我不知道为什么

javascript - 参数中字符串中的变量

javascript - 在 Javascript 中调用另一个函数中定义的函数

python - 如何使用join方法和sort方法