C中的字符串反转意外输出
这段代码看起来像是要反转字符串,但它只反转第一个字符,输出为:-delloworlh 你知道为什么会这样吗C中的字符串反转意外输出,c,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(
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;
}
将循环条件语句更改为i在循环中,使用条件:i更改为
for(i=0,j=(strlen(p)-1); i<j; i++,--j)
{
t = p[i];
p[i] = p[j];
p[j] = t;
}
是的,对。但是我看了5分钟这个代码,问我,为什么他这样做这么昂贵的方式。更简单的方法是创建一个新数组并反向填充它。。但是如果我们创建一个新的数组,它会增加空间复杂度。请选择您的答案。
for(i=0,j=(strlen(p)-1); i<j; i++,--j)
{
t = p[i];
p[i] = p[j];
p[j] = t;
}