我已经搜索过了,但我所能找到的只是一个反转字符串的函数。这是我到目前为止所拥有的:
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* 指向的字符串的长度。
我是一名优秀的程序员,十分优秀!