gpt4 book ai didi

c - 当反向字符串的函数返回地址时,我无法打印元素

转载 作者:太空宇宙 更新时间:2023-11-04 07:02:00 26 4
gpt4 key购买 nike

我最近正在编写一个函数来反转字符串输入。例如,输入=“你好”,然后输出=“olleh”我有一个问题,当我返回 char* 的地址时,它看起来很好,但为什么我不能打印那个指针的字符串?

首先非常感谢,这是我的代码:

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

char* reverseString(char*);

int main(void)
{
char* s = "hello";
char* out;

out = reverseString(s);

printf("%p %s\n", out, out);
return 0;
}

char* reverseString(char* s)
{
int i;
int size;
char* reverse;

size = sizeof(s);
char reversechar[size];

for (i = 1; i < size + 1; i++)
reversechar[i - 1] = s[size - i];

reverse = reversechar;
//printf("%p\n",reverse);
return reverse;
}

结果:0x7fff40db7300 @@

最佳答案

不要在函数内部分配 reversechar。当函数返回时它将超出范围(即不再有效访问它)。而是在 main 中分配它并传递一个指向该函数的指针。像这样的东西:

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

void reverseString(char* dst, char* s)
{
int i;
int size;

size = strlen(s);

for(i = 0; i < size; i++)
dst[i] = s[size-1-i];

// Terminate the string
dst[size] = 0;

}

int main(void)
{
char* s = "hello";
char out[strlen(s)+1];

reverseString(out, s);

printf("%p %s\n",out,out);

return 0;
}

将此与 strcpymemcpy 等函数进行比较。他们不会为你分配内存。它们要求您提供源指针和目标指针。

关于c - 当反向字符串的函数返回地址时,我无法打印元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36965437/

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