No.6ベストアンサー
- 回答日時:
> 最初の配列は自分の好きなものを格納します。
中身の問題ではなくて,(混乱させてしまうかもしれませんが,)
「複数の文字列を格納した配列」を実現する方法が幾つか考えられます。
# 既に2通りの考え方に基づいた回答が出てる
例えば,
char a[] = "Red\0Green\0Blue"; // char 型の配列
char b[][8] = { "Red", "Green", "Blue" }; // (char 型の配列)の配列
char *c[] = { "Red", "Green", "Blue" }; // (char 型へのポインタ)の配列
これらは,いずれも「複数の文字列を格納した配列」と言えそうですが,
メモリ上の文字列の配置が違います。
これらを受け取る関数の引数の型や,処理方法も変わります。
2番目のと3番目のは既に出ているので,(ANo.3 と ANo.4)
1番目ので作ってみました。
int find_string(const char *s, int n, const char *a)
{
int i;
const char *p = s;
for (i=0 ; i<n ; i++) {
if (strcmp(p, a) == 0) // 文字列の値が等しいか?
return 1;
p += strlen(p) + 1; // 次の文字列に移動
}
return 0;
}
No.4
- 回答日時:
他の方が言うように、「あるいは」の意味が不明ですよね。
額面通りに捉えると、文字列数(数値)あるいは文字列(アドレス値)となりますが、
どちらの意味か判定する方法はC言語仕様上ありません。
「あるいは」を無理やり採用してコーディングするとこうですか?
int find_string(char **strings, unsigned int a /* 文字列数、あるいは文字列 */ )
{
int i;
for(i=0; i<a; i++){
if(strstr(strings[i], (char *)a))
return 1;
}
return 0;
}
ちなみに、当然ですがこれでは正しく動作することはできません。
No.2さんのように「あるいは」は無視すると、以下のように
それなりのものが作れそうです。
int find_string(char **strings, int num, char *a)
{
int i;
for(i=0; i<num; i++){
if(strstr(strings[i], a))
return 1;
}
return 0;
}
No.3
- 回答日時:
#2 さんの改変版
・引数には文字列の配列とその要素数、検索対象の文字列aを与える
・文字列の配列内で、検索対象文字列aが「含まれている」ものを探す
・一つでも「含まれて」いれば1、全て比較しても「含まれて」いなければ0
>ヒントや考え方など教えて下さい。
http://www.bohyoh.com/CandCPP/C/Library/strstr.h …
この strstr を使用すればいいと思います。
cStr[ 3 ][ 32 } = {
"どなたかご教示お願いします",
"凸凹大学××教授が失踪した",
"○○教授がノーベル賞を受賞した"
};
関数内
{
3回ループ( i++ )
{
if( NULL != strstr( cStr[ i ], "教授" ) ) return( 1 );
}
return( 0 ); // 全てに含まれていない
}
No.2
- 回答日時:
たしかにこれはひじょーにわかりづらい。
それが素の文だとすると、私なら「あるいは」の部分を意図的に無視してこう取った上で、出題者にこれでいいかを確認しますね。
・引数には文字列の配列とその要素数、検索対象の文字列aを与える
・文字列の配列内で検索対象文字列aと「完全一致」するものを探す
・一つでも完全一致すれば1、全て比較しても一致しなければ0
No.1
- 回答日時:
「よくわかりません」ということは, 「わかるところもあるけどわからないところもある」ってことだね. じゃあ
・どこまではわかるのか
・どこからがわからないのか
を, もっとはっきり書いてほしい.
あと, この関数の仕様に曖昧なところがある:
1. 「引数として、複数の文字列を格納した配列、その文字列数、あるいは文字列aを与え」ってあるけど, これは多分意味が通じない. 「あるいは」はどんな意味で使ってるの?
2. 「a が配列中に見つかる」というのは, 「正確に一致したものがある」という意味なのか「部分文字列として見付かる」だけでいいのか, どっち?
念の為聞いておきたいんだけど, 「ある文字列が別の文字列と正確に一致する」とか「ある文字列が別の文字列の中にある」というのはわかる?
この回答への補足
もともとこういう文なので・・・・・・・多分、引数として文字列を格納した配列を入力し、そこから検索したい文字列を入力→その文字列が最初の文字列の中に含まれていれば1を、ないなら0を返すものです。
補足日時:2010/12/15 01:08お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- C言語・C++・C# C#の問題です。 文字列型の配列 s[100] にキーボードから入力された100文字以内の文字列(単 2 2022/06/22 15:18
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- C言語・C++・C# c言語 配列とポインタについて 3 2023/02/09 22:53
- Excel(エクセル) Excelでの列幅設定 1 2023/02/05 14:41
- Ruby 初心者プログラミング 3 2022/10/12 11:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
%dなどの違い
-
シリアル通信で0x00を送信した...
-
C#でstringをポインタとして渡す
-
プログラムによく出てくるst...
-
VBA-DLLの引数受け渡しについて
-
プログラム問題・・・
-
nullと""、\\0とEOFの違いにつ...
-
CSVファイルの「”」について
-
WSH(VBS)でJSONの文字列を読み...
-
C#で文字列から数値だけ取得す...
-
int型での文字列の扱いについて
-
char型配列の最大要素数
-
文字コードによる表記
-
数字の入った配列をファイルへ...
-
Cで二次元配列の読み込み
-
binaryに対して正規表現を適用...
-
AnsiStringについて
-
c言語によって文字列を逆順する...
-
TCL言語で文字列検索方法を教え...
-
C++で入力した文字列から数字を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C++で入力した文字列から数字を...
-
nullと""、\\0とEOFの違いにつ...
-
プログラムによく出てくるst...
-
%dなどの違い
-
WSH(VBS)でJSONの文字列を読み...
-
TCL言語で文字列検索方法を教え...
-
C#でstringをポインタとして渡す
-
16進数を2文字ずつ配列に格納し...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
C++で文字列の右端から特定の文...
-
シリアル通信で0x00を送信した...
-
VBA-DLLの引数受け渡しについて
-
数字の入った配列をファイルへ...
-
c#で他のアプリの文字入力フォ...
-
構造体→文字列→構造体 をする方法
-
Shift_JIS(16進)を文字に変換す...
-
バイナリファイル中の日本語文...
-
C言語の課題で困っています;
-
[C++]WCHARの1文字目しか表示で...
-
VB6.0でのバイナリデータの扱い...
おすすめ情報