在你的代码中,问题出现在倒序输出字符串时没有正确更新指针 str_output
的位置。在函数 inverted_order()
中,将指针 p
指向输入字符串的最后一个字符,并且在循环中使用 str_output++
更新输出字符串的位置,但是最后打印输出的字符串仍然为空。
解决方法是,在循环中先将字符存储到 *str_output
,再通过 str_output++
更新指针位置。另外,在输出字符串之前,需要添加结束符 \0
。
以下是修改后的代码:
#include <stdio.h>
#define MAXSIZE 100
void inverted_order(char *str_input, int length, char *str_output);
int main()
{
char str_input[MAXSIZE];
char str_output[MAXSIZE];
int count = 0;
printf("请输入一个任意长度的字符:");
fgets(str_input, sizeof(str_input), stdin);
while (str_input[count] != '\0' && str_input[count] != '\n')
{
count++;
}
printf("输入的字符串为:%s", str_input);
inverted_order(str_input, count, str_output);
return 0;
}
void inverted_order(char *str_input, int length, char *str_output)
{
char *p = str_input + length - 1;
while (length > 0)
{
*str_output = *p;
str_output++;
length--;
p--;
}
*str_output = '\0'; // 添加结束符
printf("倒序排序的字符串为:%s", str_output);
}
这样就能正确地输出倒序排序的字符串了。
内容由零声教学AI助手提供,问题来源于学员提问