此代码看起来应该反转字符串,但它只反转第一个字符,输出为: - delloworlh
为什么会发生这种情况的任何想法
int main()
{
char p[] = "helloworld";
char t;
int i, j;
for(i=0,j=(strlen(p)-1); i<j; i++)
{
t = p[i];
p[i] = p[j-i];
p[j-i] = t;
}
printf("%s", p);
return 0;
}
答案 0 :(得分:3)
在循环中,您使用条件:i<j
因此,在我达到j / 2之后,它开始将反向弦再次恢复到其原始形式
因此,您必须将条件更改为i<j/2+1
;
答案 1 :(得分:1)
将循环条件语句更改为i <= j-1
。
for(i = 0, j = (strlen(p)-1); i < j-i; i++){...}
答案 2 :(得分:1)
更改为
for(i=0,j=(strlen(p)-1); i<j; i++,--j)
{
t = p[i];
p[i] = p[j];
p[j] = t;
}