通过指针的字符输入功能没有产生响应

Character input function through pointers is not yielding a response

作为更大代码库的一部分,我通过创建自己的函数来复制 gets() 函数。该函数仅将字符接受到字符数组中,直到它遇到换行符或检测到字符串长度已被破坏。代码如下:

void word_enter(char *word_search)
{
    char r;
    char *m=word_search;
    printf("Enter the word to search for: ");
    while((r==getchar())!=EOF)
    {
        if(r=='\n' || m==&word_search[WORD_LEN-1])
        {
            *m=0;
            break;
        }
        else
        {
            *(m++)=r;
        }
    }
}

Apropos WORD_LEN,其值已被#define 指令定义为25。

然而,该功能不能正常工作,而且相当紧张。输入换行符不会使函数停止,光标只是移动到下一行。这怎么解释?我一直在大声疾呼,弄清楚错误是什么,但无济于事。请注意,虽然我非常了解 string.h 库具有相同的功能,但我打算从头开始创建我的库。

您正在比较 rgetchar() 的 return:

while((r==getchar())!=EOF)

您应该做的是将 getchar() 的 return 值分配给 r:

while((r=getchar())!=EOF)