如何正确使用C中的isalnum函数?

时间:2017-05-17 07:09:25

标签: c fifo mkfifo

我试图检查字符串的字符是否为alnum,然后检查字符串是否只包含alnum字符以打印字符串。当我运行程序时没有任何反应。我有另一个程序,我从输入中读取了我想要的文本,然后用FIFO发送它。如果我不参加该计划,请检查"功能它起作用,之后就没有了。

void    put_alphanum(char *str)
{
while (*str)
{
    if (*str >= '0' && *str <= '9')
        write(1, str, 1);
    else if (*str >= 'A' && *str <= 'Z')
        write(1, str, 1);
    else if (*str >= 'a' && *str <= 'z')
        write(1, str, 1);
    str++;
}
write(1,"\n",1);
}

这是我用来打印字符串的函数。如果我不将其与检查功能放在一起,程序就可以运行。

int check(char *str)
{

while(*str)
{
if(isalnum(*str)==0)
return 0;

str++;
}

return 1;

}

这是我用来检查字符串是否只包含alnum字符的函数。但是,如果我不在我的程序中包含此功能,该程序将起作用。我想这就是问题所在。主要功能()

int     main()
{
int fd;
int len;
char buf[BUFF_SIZE + 1];

mkfifo(FIFO_LOC, 0666);
fd = open(FIFO_LOC, O_RDONLY);
while(1)
{
    while((len = read(fd, buf, BUFF_SIZE)))
    {
        buf[len] = '\0';
        if(check(buf)==1)
             put_alphanum(buf);

    }
}
return (0);
}

1 个答案:

答案 0 :(得分:0)

输入文字包含&#39; \ n&#39;这意味着该字符串不是字母数字字符串。当我阅读时,按下输入按钮,这意味着字符串中还有一个字符。