我有一个 GtkEntry,用户必须在其中输入 IP 号码或主机名。当按下按钮时,用户在条目中输入的内容被添加到字符中。如何以编程方式检查此字符是否包含空格、换行符或制表符?我不需要删除它们,只需知道它们是否存在。提前致谢!
user197967
问问题
16801 次
5 回答
6
看看字符分类例程:man isspace
.
于 2010-06-25T14:45:15.673 回答
4
创建一个包含感兴趣字符的 char 数组。然后使用 strchr() 搜索字符串中是否存在字符。
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
}
于 2010-06-25T14:46:15.497 回答
3
您正在寻找的功能是strpbrk()。
#include <stdio.h>
#include <string.h>
int check_whitespace (char *str)
{
char key[] = { ' ', '\n', '\t', 0 };
return strpbrk (str, key);
}
于 2010-06-25T16:43:23.487 回答
0
让我们假设您的意思是将输入到 GtkEntry 中的内容添加到 char 数组(在 C 术语中是一个字符串,前提是它以空值结尾)。然后检查该 char 数组是否包含至少一个或多个“空格”字符(根据语言环境,因此我们使用 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
例如,它可以变成一个函数。
于 2010-06-25T16:03:50.210 回答
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;
}
于 2010-06-25T16:20:39.267 回答