
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
ごめんなさい、No.1へのお礼とNo.3へのお礼が矛盾しているので確認ですが、No.3へのお礼に書いてあることが正しくて、次の質問文が正しいということでいいですか?
「任意の対象文字列の中から、任意の検索文字列が何回現れるかカウントしたい」
ならば、strstr()を使います。
strstr()は、指定した文字列の先頭から、検索文字列が最初に現れるその先頭文字のポインタを返してくれる関数です。見つからなかったらNULLを返します。
なので、対象文字列の先頭から検索文字列で検索を始め、ヒットしたらポインタを進めて再検索する、ということを戻り値がNULLになるまで繰り返します。ここで、No.4の方がおっしゃる「文字列 "AAAAAAAAAA" の中から文字列 "AAAAA" を探す」の問題がありますが、重複を許すならばポインタを進めるのは1、重複を許さないならばstrlen("AAAAA")です。
ちなみに、ポインタのことは理解していますよね?
No1の理解力の乏しい回答者と同一人物が自己弁護しに来たのかな?
社会人ですか?
大人って楽でいいですね?
悪いけど自分で調べたほうが早かったのでどうでもいいです。

No.3
- 回答日時:
No1です。
補足要求の返信ありがとうございました。
要件としては、
「文字列(文字数がいくつかは不明)の中に、特定の1文字がいくつかあるかをカウントしたい。」
ということであってますか。以下、その前提での回答です。
C言語で文字列という場合は、必ず文字列の最後に終端を表す文字が格納されています。
これは、ASCIIコードの値が0の文字です。
C言語では '\0' 又は 0x00 でこの文字を表します。
従って、'\0'が出現するまで、検索し、'\0'を検知した時点で検索を終了すれば良いです。
以下は、文字列"ABCAXYA"中にAが何個あるかのカウント例です。
--------------------------------------------
#include <stdio.h>
int main(void){
char str[16] = "ABCAXYA";
int i;
int ctr;
i = 0;
ctr = 0;
while(1){
if (str[i] == '\0') break;
if (str[i] == 'A') ctr++;
i++;
}
printf("Aの数は%d個です\n",ctr);
return 0;
}
----------------------------------------------------
実行結果
Aの数は3個です
蛇足ですが、
「では、終端が'\0'になってない場合はどうなるのか」という疑問がでるかも知れませんが、
その場合、プログラムは'\0'を検知するまで延々と動作します。(つまり暴走します)
従って、暴走しないように、必ず、終端が'\0'になっているとを保証させてから、動作するようにさせる必要があります。
すいませんねぇ、文字と文字列の違いもわからない人はすっこんでていいですよ?
abcabcabcのなかのaが何個なんてのはプログラミング初めて1週間の僕にだってわかります。
aが何個かじゃなくabやbcが何個かって聞いてるの
よくそんな知識力と理解力で解答なんてしようなんて思いつきましたねぇ^^;

No.1
- 回答日時:
補足要求です。
質問1:
文字列の中の1文字を検索するのですか?
それとも、文字列の中の文字列(=複数文字)を検索するのですか?
質問2:
>文字列の中の文字を検索してカウントしたり検索する文字列が毎回固定ならばできるのですが
>その都度変わる文字列の中の文字列をカウントする方法が解りません
毎回固定の場合のソースを提示してください。
質問1
>文字列の中の文字
文字列ではなく文字(1文字)
>カウントしたり検索
つまり複数ということが質問内容の文章から読み取れるはずです
質問2
3文字固定なら
初心者なので効率的にどうなのかは解りませんが検索対象の文字列str1[i], str1[i+1], str[i+2と検索する文字列]str2[0], str2[1], str2[2]でで検索を掛ければできますね
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) googleスプレッドシートでカッコ内の文字数をカウントしたい 1 2023/01/17 15:52
- C言語・C++・C# C言語で 英文字のみからなる文字列、”Radar”、”WasItACatISaw”、”a”、””(空 5 2022/12/20 15:17
- Excel(エクセル) Excelの列から検索して該当する行を別シートに転記するVBA 2 2022/12/20 09:35
- Excel(エクセル) Excelでの検索結果を含む行だけを表示させたい 5 2023/03/10 17:08
- Excel(エクセル) エクセルでA列セル内で折り返すことなく、文字列を、B列C列・・・側に一行に 2 2022/07/23 02:02
- C言語・C++・C# C#の問題です。 文字列型の配列 s[100] にキーボードから入力された100文字以内の文字列(単 2 2022/06/22 15:18
- マウス・キーボード Google検索の英語キーボード 英語のキーボードの配列が元に戻らなくなりました まえの配列は左上に 1 2022/06/19 11:41
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Visual Basic(VBA) 指定文字以外のカウント 4 2023/05/03 14:37
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
【Excel VBA】複数ある特定の文...
-
Excelで3E8を3.00E+8にしない方...
-
変数内に入った文字列の結合 UWSC
-
Left関数とRight関数を合わせた...
-
VBAでの Replace関数で、ワイル...
-
エクセルでセル内の文字列の最...
-
文字列からタブコードを取り除...
-
VBA2005 16進を2桁で表示したい。
-
Excelで指数表現しないようにす...
-
LEFT関数で文字数を指定しない...
-
同一セル内に関数と文字列を同...
-
MS SQLServer のSQLで文字列の...
-
fgets()の仕組みについてくわし...
-
PowerShellでの文字列置換がで...
-
エクセルで文字列の最大値を抽...
-
【Teratermマクロ】文字列の分...
-
Pro c/c++ でホスト変数の後に....
-
C#で年月を比較する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
【Excel VBA】複数ある特定の文...
-
Excelで3E8を3.00E+8にしない方...
-
エクセルで文字列をtxtファイル...
-
エクセルで文字列の最大値を抽...
-
VBA2005 16進を2桁で表示したい。
-
Excelで指数表現しないようにす...
-
エクセル 数値データを桁をそ...
-
同一セル内に関数と文字列を同...
-
Left関数とRight関数を合わせた...
-
MS SQLServer のSQLで文字列の...
-
Msgboxの×が押されたとき
-
ORCLEでの小数の表示方法の変更...
-
textboxユーザーコントロールの...
-
VBの「As String * 128」とは?
-
Pro c/c++ でホスト変数の後に....
-
変数内に入った文字列の結合 UWSC
おすすめ情報