所以这里似乎有太多的字符串反转问题,但我想做的具体问题似乎没有涵盖。我这样做只是为了复习 C 并没有什么重要意义。我想达到的标准,
1.编写一个函数来反转字符串
2.不会改变原作
3.必须只接受原始字符串作为参数
4.不会使用现有的字符串反转函数
我最初编写了简单的代码来进行反转,但很难让它不改变原来的样子。初始代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *reverse(char *inString){
int j = 0;
j = strlen(inString) -1;
char temp;
for(int i = 0 ; i<=j; i++,j--){
temp = inString[i];
inString[i] = inString[j];
inString[j] = temp;
}
return inString;
}
int main(){
char string[20]="hello world";
printf("%s\n",string);
char *outString = reverse(string);
printf("%s\n",string);
printf("%s\n",outString);
}
输出:
hello world
dlrow olleh
dlrow olleh
最佳答案
我的建议:
- 为新字符串分配内存。
- 填写包含输入字符串反转的新字符串。
- 返回新字符串。
- 确保在调用函数中释放新字符串的内存。
类似于:
char *reverse(char *inString)
{
int len = strlen(inString);
char* retString = malloc(len+1);
if ( retString != NULL )
{
for(int i = 0 ; i < len; ++i)
{
retString[len-1-i] = inString[i];
}
retString[len] = '\0';
}
return retString;
}
关于c - 字符串反转而不改变原始字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29265506/