【发布时间】:2026-02-07 06:20:12
【问题描述】:
我正在尝试打印一个反转的字符串/数组。我使用了下面的代码,它似乎能够从第一个数组string 以正确的顺序为我的第二个数组revString 提供值。我还可以在两个数组中打印单个字符,并且可以打印第一个数组的整个字符串。但是 revString 数组根本不打印。我想知道我是否在这里遗漏了重要的一点。
void reverseString(char string[]) {
int i = strlen(string);
int i_2 = 0;
revString arrayet
char revString[i + 1];
char *character;
while (i > -1) {
character = &string[i];
revString[i_2] = *character;
printf("%c", revString[i_2]);
i = i - 1;
i_2 = i_2 + 1;
}
revString[i_2] = '\0';
printf("%d\n", i_2);
printf("%s", revString);
}
代码现在给出以下输出示例字符串"Hello World";
dlrow olleH13
如您所见,最后的 printf 语句没有做任何事情
【问题讨论】:
-
我认为它会打印值,但您的程序在值显示到控制台之前退出。在
%s之后添加\n以查看打印输出。 -
您想仔细检查源字符串的索引。源数组的哪些元素在第一次迭代期间访问?
-
您也可能想阅读以下内容:How to debug small programs
-
character = &string[i]; revString[i_2] = *character;是一种非常迂回的说法revString[i_2] = string[i];。 -
最后的 printf 语句没有做任何事情,因为反转字符串的第一个字符是 ____(填空;如有必要,请使用调试器)。