如何在 C 语言中正确使用 isalnum 函数?
How to use correctly isalnum function in C?
我尝试检查字符串中的字符是否为 alnum,然后检查字符串是否仅包含 alnum 字符以打印字符串。当我 运行 程序没有任何反应。我有另一个程序,我用它从输入中读取我想要的文本,然后用 FIFO 发送它。如果我不在程序中包含 "check" 函数,它会起作用,之后它就不会起作用。
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] = '[=12=]';
if(check(buf)==1)
put_alphanum(buf);
}
}
return (0);
}
输入文本包含“\n”,这意味着该字符串不是字母数字字符串。当我阅读时,我按下回车按钮,这意味着字符串中多了一个字符。
我尝试检查字符串中的字符是否为 alnum,然后检查字符串是否仅包含 alnum 字符以打印字符串。当我 运行 程序没有任何反应。我有另一个程序,我用它从输入中读取我想要的文本,然后用 FIFO 发送它。如果我不在程序中包含 "check" 函数,它会起作用,之后它就不会起作用。
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] = '[=12=]';
if(check(buf)==1)
put_alphanum(buf);
}
}
return (0);
}
输入文本包含“\n”,这意味着该字符串不是字母数字字符串。当我阅读时,我按下回车按钮,这意味着字符串中多了一个字符。