我编译了一段代码,使用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/