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