首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言编程有关问题,下面一个C程序的功能是实现字符串的反向输出,但是printf的输出结果是空,为什么会这样

2012-03-26 
c语言编程问题,下面一个C程序的功能是实现字符串的反向输出,但是printf的输出结果是空,为什么会这样。#incl

c语言编程问题,下面一个C程序的功能是实现字符串的反向输出,但是printf的输出结果是空,为什么会这样。
#include <stdio.h>


void reverse_string(char *string)
{
char *p_start = string;
char *p_end = string;
char str_tmp;

while(*p_end++)
{
continue;
}

p_end--; //我调试到这边查看*p_end 的内容并不是最后一个字符k,问题应该就在这边????

for(p_start; p_start < p_end; p_start++,p_end--)
{
str_tmp = *p_start;
*p_start = *p_end;
*p_end = str_tmp;
}

}

int main()
{
char string[20] = "abcdefghijk";
reverse_string(string);

//puts(string);
printf("string = %s\n",string);
return 0;
}

[解决办法]
改成这样
while(*p_end)
{
p_end ++;
continue;
}
[解决办法]
#include <stdio.h>


void reverse_string(char *string)
{
char *p_start = string;
char *p_end = string;
char str_tmp;

while(*p_end++)
{
continue;
}

p_end--; //我调试到这边查看*p_end 的内容并不是最后一个字符k,问题应该就在这边????
p_end--; //应该多减一个就对了,因为while(*p_end++)
先判断后在加,就多加了俩
for(p_start; p_start < p_end; p_start++,p_end--)
{
str_tmp = *p_start;
*p_start = *p_end;
*p_end = str_tmp;
}

}

int main()
{
char string[20] = "abcdefghijk";
reverse_string(string);

//puts(string);
printf("string = %s\n",string);
return 0;
}
[解决办法]
while(*p_end++) // 这的问题
{
continue;
}
比如说到了最后一个字符k,比较,不是结束符,自增,此时为'\0',然后再比较,为'\0'退出,但是还是增加了,所以加到了'\0'的后面,你下面减一下end等于'\0'交换时它到了第一位,所以没输出,改成*++p_end

热点排行