gpt4 book ai didi

c - 如何在 C 中反转字符串(不在适当的位置)?

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

我已经搜索过了,但我所能找到的只是一个反转字符串的函数。这是我到目前为止所拥有的:

char* reverseString(char* string)
{
int i, j;
char reversed[sizeof(string)];
j = strlen(string);

for (i = strlen(string); i >= 0; i--)
{
reversed[j - i] = string[i];
}
return reversed;
}

但是,这遇到了 reversed 是局部变量的问题,因此返回指向它的指针会抛出

warning: function returns address of local variable [enabled by default]

最佳答案

你可以为它动态分配内存:

char* reverseString(char* string)
{
int i;
int j = strlen(string);
char *reversed = malloc(j + 1);
...

在这种情况下,调用者必须记住 free() 返回的已分配缓冲区。

或者你可以让调用者传入一个足够大的缓冲区来容纳反转的字符串:

char* reverseString(char* string, char *reversed)
{
int i, j;
j = strlen(string);

for (i = strlen(string); i >= 0; i--)
{
...

另请注意,在您当前的代码中:char reversed[sizeof(string)]; 是错误的,在这个函数中 string 只是一个 char* ,所以 sizeof(string) 给你一个 char* 的大小>,不是这个 char* 指向的字符串的长度。

关于c - 如何在 C 中反转字符串(不在适当的位置)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13265761/

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