C中的字符串反转意外输出

时间:2014-06-16 07:46:47

标签: c

此代码看起来应该反转字符串,但它只反转第一个字符,输出为: - 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;
}

3 个答案:

答案 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;
}