#include<stdio.h>
#include<string.h>
int main(void)
{
char c[255];
printf("Enter a word in a line:");
int i = 0;
do
{
scanf("%c",&c[i]);
}while( (c[i] != '\n') && ++i);
for(i--; i>=0; i--)
{
printf("%c",c[i]);
}
printf("\n");
return 0;
}
使用++i可以正常进行读取
#include<stdio.h>
#include<string.h>
int main(void)
{
char c[255];
printf("Enter a word in a line:");
int i = 0;
do
{
scanf("%c",&c[i]);
}while( (c[i] != '\n') && i++);
for(i--; i>=0; i--)
{
printf("%c",c[i]);
}
printf("\n");
return 0;
}
使用i++只能读取一个字符
i++是先使用再++,你读取了第一个字符串后(c[i] != '\n') && i++这个表达式等价于(c[i] != '\n') && 0,是假不成立,就只能读取一个字符串
而++i是先++再使用,那么你读取了第一个字符串后(c[i] != '\n') && ++i这个表达式等价于(c[i] != '\n') && 1为真,成立,故可以继续读取
当然了,因为第一轮循环的时候,i++的值是0
i++的值是自增之前的值,如果i=0,i++的值还是0,所以直接跳出循环
++i的值是自增之后的值,如果i=0,i++的值是1,循环继续执行