3
我試圖檢查一個字符串的字符是否是alnum,然後如果字符串只包含alnum字符來打印字符串。當我運行程序時,什麼都沒有發生。我有另一個程序,我從輸入中讀取了我想要的文本,然後用FIFO發送它。如果我不在程序中包含它的「檢查」功能,那麼它不會。如何在C中正確使用isalnum函數?
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);
}
嗯......所以你有一個函數,檢查一個字符串是否只包含字母數字字符,那麼你有一個函數,只打印該字符串的字母數字字符?輸入字符串是否包含「\ n」? –
在我檢查前我把字符串'\ 0'放在末尾 –
另外,這種東西不是可移植的:'if(* str> ='A'&& * str <='Z') '。 C對字符集編碼幾乎沒有限制。一些真實世界編碼,例如EBCDIC,不會以連續的順序編碼字母,導致此方法失敗。不過,這不是你的問題。 –