我陷入了无限循环,由于某种原因,当输入 \n
时程序没有终止。此外,代码的重点是反转输入,但我正在尝试使用指针而不是整数来跟踪数组中的位置。
#define MSG_LENGTH 80
int main(void)
{
char msg[MSG_LENGTH], *p;
printf("Enter a message: ");
for (p = msg; p < &msg[MSG_LENGTH];)
{
*p++ = getchar();
if (*p == '\n')
break;
}
printf("Reversal is: ");
for (p--; p >= msg;)
putchar(*p--);
return 0;
}
最佳答案
试试这个:
#define MSG_LENGTH 80
int main(void)
{
char msg[MSG_LENGTH], *p;
printf("Enter a message: ");
for (p = msg; p < &msg[MSG_LENGTH];)
{
*p = getchar();
if (*p == '\n')
break;
p++;
}
printf("Reversal is: ");
for (p--; p >= msg;)
putchar(*p--);
return 0;
}
您在 break
条件之前增加了 p
指针。因此,即使 *p
包含 '\n'
,也会在递增指针位置后进行检查。
关于c - 代码错误? [C],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29385266/