Cで文字列を検索する方法を知っています。forループを使用してからstrstr関数を使用して、オカレンスがあるかどうかを判断します。しかし、今は検索したい整数よりも整数があります。私はインターネットでいくつかの例を見つけましたが、それらはすべて正確な数を検索しますが、私は望んでいません。「20」のように検索する必要があります。「2010」という数字がある場合は、それが表示されます。
どうすればcでそれを行うことができますか?
たぶん私は要点を見逃しています...しかし、なぜstrstrを使い続けないのですか?
int main(){
char tmpbookyear [] = "this year is 2010";
char searchCriteria [] = "20";
char *result;
if((result = strstr (tmpbookyear, searchCriteria)) != NULL)
printf ("Returned String: %s\n", result);
else
printf("GOT A NULL\n");
}
mike@linux-4puc:~> gcc test.c
mike@linux-4puc:~> ./a.out
Returned String: 2010
I need to search like "20" and if there is a number "2010" it should display it.
それはあなたがそれを正しくしたいことですか?
編集:
char year[] = "2012";
char search[] = "2";
if(strstr(year, search) != NULL)
{ printf("result is %s\n",strstr(year, search)); }
mike@linux-4puc:~> gcc test.c
mike@linux-4puc:~> ./a.out
result is 2012
数字が見つかるまで、文字列を 1 文字ずつスキャンします ( isdigit()
0 以外を返します)。次に、その場所の文字列を unsigned long に変換しますstrtoul()
。比較を行ってから、変換終了ポインターの戻り値を使用して、strtoul()
スキャンを続行する場所を確認します。