c - 代码错误? [C]

标签 c

我陷入了无限循环,由于某种原因,当输入 \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/

相关文章:

标准输出的内容不正确

C MPI - 批量生成多个线程

c - 错误: assignment to expression with array type in c

c - OpenSSL定制开发

c - KILL 信号是否立即退出进程?

c - 在C中,Print语句没有在for循环中打印

c - 非常大的 C 结构的分段初始化

android - gcc disable -Wall 特定文件/文件夹的标志

c - C语言中不颠倒单词的倒序行

c - 我想从缓冲区中的元素复制指定长度的字符串