通过指针的字符输入功能没有产生响应
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 库具有相同的功能,但我打算从头开始创建我的库。
您正在比较 r
与 getchar()
的 return:
while((r==getchar())!=EOF)
您应该做的是将 getchar()
的 return 值分配给 r
:
while((r=getchar())!=EOF)
作为更大代码库的一部分,我通过创建自己的函数来复制 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 库具有相同的功能,但我打算从头开始创建我的库。
您正在比较 r
与 getchar()
的 return:
while((r==getchar())!=EOF)
您应该做的是将 getchar()
的 return 值分配给 r
:
while((r=getchar())!=EOF)