1

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

4

5 回答 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 回答