我编译了一段代码,使用printf可以正常工作,但是我希望它不被打印就返回。

char *ft_strrev(char *str)
{

    int i = 0;
    while (str[i] != '\0')
    {
        i++;
    }

    while (i != 0)
    {
        i--;
    }
    return str;

}

int main ()
{
    char *string;
    string = "amrani";

    ft_strrev(string);
}


这里最主要的是反转输入的..
我如何才能完全使用return来返回给我的var字符串的完整字符,还有什么提示?

最佳答案

有两种方法可以执行此操作:创建一个新字符串,然后将其返回或在适当位置更改参数。这是根据您的说明添加的新字符串版本。请注意,已为新字符串分配了内存,并且调用方应将结果free

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

char *ft_strrev(char *str)
{
    int len = strlen(str);
    char *reversed = malloc(sizeof(*reversed) * (len + 1));
    reversed[len] = '\0';

    while (*str != '\0')
    {
        reversed[--len] = *str++;
    }

    return reversed;
}

int main()
{
    char *string = "amrani";
    char *reversed = ft_strrev(string);
    printf("%s\n", reversed);
    free(reversed);
}


注意,许多此类函数会将字符串的长度作为第二个参数,因此该函数不必调用strlen

关于c - 在C中返回字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51530524/

10-10 19:47