这是一个返回反转字符串的代码,就像"ABC"返回"CBA"一样,但是它返回这个"CBA =²²²²ß ` Y*&s"。怎么了?
char* inv(char* C)
{
int lenght = strLenght(C)-1;
int idx=0;
char* tempStr = (char*)malloc(lenght+2);
for (;lenght>=0;lenght--,idx++)
{
tempStr[idx] = C[lenght];
}
return tempStr;
}
int strLenght(char* str)
{
int lenght=0;
while(str[lenght] != ' ')
lenght++;
return lenght;
}
int main(int argc, char *argv[])
{
char* st= "ABC";
char* sr = inv(st);
printf("%s",sr);
}
您的tempStr
不是null终止的。此外,strlen()是c中的集成函数,您不必自己编写。
就像评论说的那样,我错过了' ',谢谢。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void reverse(char *des, char *src)
{
int len = strlen(src) + 1; //strlen() can't calculate the ' '
int i, j;
for (i = 0, j = strlen(src) - 1;
i < len; i++, j--) {
des[i] = src[j];
}
des[i] = ' '; //important!!
}
int main(int argc, char *argv[])
{
char* st= "ABC";
char sr[strlen(st) + 1];
reverse(sr, st);
printf("%s",sr);
}