Linux / C检查char是否包含空格,换行符或制表符

时间:2010-06-25 14:41:30

标签: c char newline tabs spaces

我有一个GtkEntry,用户必须输入IP号码或主机名。按下按钮时,用户在条目中键入的内容将添加到char中。如何以编程方式检查此char是否包含空格,换行符或制表符?我不需要删除它们,只是为了知道它们是否存在。提前谢谢!

5 个答案:

答案 0 :(得分:6)

查看字符分类例程:man isspace

答案 1 :(得分:4)

创建一个包含感兴趣字符的char数组。然后使用strchr()来搜索字符串中char的存在。

char charSet[] = { ' ', '\n', '\t', 0 };
char c;

// code that puts a character in c

if (strchr(charSet, c) != NULL)
{
    // it is one of the set
}

答案 2 :(得分:2)

您正在寻找的功能是 strpbrk()

#include <stdio.h>
#include <string.h>

int check_whitespace (char *str)
{
  char key[] = { ' ', '\n', '\t', 0 };
  return strpbrk (str, key);
}

答案 3 :(得分:0)

让我们假设您的意思是将输入到GtkEntry中的内容添加到char数组(一个字符串,在C术语中,只要它以null结尾)。然后检查该char数组是否包含至少一个或多个“space”字符(根据语言环境,因此我们使用isspace),

char *array;
int i;
//..
bool contains_space = false;
for(i = 0; i < strlen(array); i++) {
  if ( isspace(array[i]) ) {
    contains_space = true;
    break;
  }
}
// return contains_space
例如,

可以变成一个函数。

答案 4 :(得分:0)

您可以考虑使用如下函数来计算给定字符串中的空格字符数,给出正整数,如果找到任何字符(即TRUE),如果没有找到则为零(即FALSE),错误为-1

#include <ctype.h>
static int
ws_count(char *s)
{
    int n = -1;
    if (s != NULL) {
        char *p;
        for (n = 0, p = s; *p != '\0'; p++) {
            if (isspace(*p)) {
                n++;
            }
        }
    }
    return n;
}