gpt4 book ai didi

c - isdigit() 包括检查空格

转载 作者:太空宇宙 更新时间:2023-11-04 02:53:49 26 4
gpt4 key购买 nike

我正在做一些 IO,其中一行是 number number,但是当我使用时,

if(isdigit(buffer) > 0) { ... }

它失败了,我相信这是因为每个数字之间有一个空格。有没有办法在使用 isdigit() 时不包含空格?或者有其他选择吗?谢谢。

最佳答案

如评论中所述,isdigit() 和 friend 处理字符,而不是字符串。像这样的东西会做你想做的事:

bool is_digit_or_space(char * buffer) {
while ( *buffer ) {
if ( !isdigit(*buffer) && !isspace(*buffer) ) {
return false;
}
++buffer;
}
return true;
}

完整代码示例:

#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>

bool is_digit_or_space(char * buffer) {
while ( *buffer ) {
if ( !isdigit(*buffer) && !isspace(*buffer) ) {
return false;
}
++buffer;
}
return true;
}

int main(void) {
char good[] = "123 231 983 1234";
char bad[] = "123 231 abc 1234";

if ( is_digit_or_space(good) ) {
printf("%s is OK\n", good);
} else {
printf("%s is not OK\n", good);
}

if ( is_digit_or_space(bad) ) {
printf("%s is OK\n", bad);
} else {
printf("%s is not OK\n", bad);
}

return 0;
}

输出:

paul@local:~/src/c/scratch$ ./isdig
123 231 983 1234 is OK
123 231 abc 1234 is not OK
paul@local:~/src/c/scratch$

关于c - isdigit() 包括检查空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19482941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com