关于一个C倒序程序

来源:百度知道 编辑:UC知道 时间:2024/06/18 06:52:16
#define Max 200
main()
{
char str[Max];
printf("请输入字符串:");
gets(str);
int len=0;
char *strlen=str;
char *left=str;
char temp;
while(*strlen++)len++;
strlen-=2;//这里很值得思考
while(left<strlen)
{
temp=*left;
*left++=*strlen;
*strlen--=temp;
}
printf("逆序后的字符串为:");
int i;
for(i=0;i<len;i++)
printf("%c",str[i]);
printf("n");
system("pause");
}
我想问下其中的 while(*strlen++)len++;
strlen-=2;//这里很值得思考,这个是什么意思 ,,由于本人才学C不太懂,顺便问下system("pause");有什么用啊

while括号内的表达式非零才会执行,即布尔表达里的真(=1)继续执行,且只循环后面一句(没打大括号)
你那句话其实等于while(*(strlen++)!=0)
{
len++;
}
strlen-=2;

前面你用的是字符串输入,字符串结束时系统自动加上‘\0’,也就是strlen指针指向那个是取值到了0,因为判断时strlen已经自加了,所以实际strlen=加上结束字符过后的字符串长度,应该减一,又因为后面要作为标号使用(标号从零开始),故还应该再减一 ,这就是while执行完后strlen减二的原因

system pause 是用来是系统等待便于你观察结果