【发布时间】:2021-03-16 17:50:40
【问题描述】:
尝试编写一个 C 程序来反转给定的字符串(使用指针),这是代码。
[示例.c]
#include <stdio.h>
#include <stdlib.h>
int _len(char s[])
{
int i = 0;
while (s[i++] != '\0');
return i;
}
char *_reverse(char s[])
{
int len = _len(s);
char *r = malloc(len * sizeof(char));
for (int i=len-1; i >= 0; i--) {
*r++ = s[i];
}
*r = '\0'; // Line 21
r -= len; // Line 22
return r;
}
int main(int argc, char *argv[])
{
char s[10] = "Hello";
printf("Actual String: %s\n", s);
printf("Reversed: %s\n", _reverse(s));
return 0;
}
当前 O/P:
Actual String: Hello
Reversed: (null)
预期 O/P:
Actual String: Hello
Reversed: olleH
这里有什么问题或遗漏..?请纠正我。提前致谢。
【问题讨论】:
-
您没有在 char 数组的末尾添加 '\0'
-
@pavi2410 在函数中的return语句之前添加
*r = '\0'后结果相同 -
在命名函数或变量时不要使用下划线。 a) C 标准不允许 b) 不对代码添加任何内容(只会降低可读性)
标签: c reverse c-strings strlen function-definition