1

ユーザーがIP番号またはホスト名を入力する必要があるGtkEntryがあります。ボタンが押されると、ユーザーがエントリに入力した内容が文字に追加されます。この文字にスペース、改行文字、またはタブ文字が含まれているかどうかをプログラムで確認するにはどうすればよいですか?それらが存在するかどうかを知るためだけに、それらを削除する必要はありません。前もって感謝します!

4

5 に答える 5

6

文字分類ルーチンを見てください:man isspace

于 2010-06-25T14:45:15.673 に答える
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
}
于 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

次のような関数を考えてみてください。指定された文字列内の空白文字の数をカウントし、正の整数が見つかった場合 (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 に答える
0

GtkEntry に入力された内容が char の配列 (C 用語では、null で終了する文字列) に追加されるという意味であると仮定します。次に、その char の配列に少なくとも 1 つ以上の「スペース」文字が含まれているかどうかを確認するために (ロケールに応じて、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 に答える