

No.4ベストアンサー
- 回答日時:
一般的なお話ですが、こういう問題を
・二つの文字列が一致するのに加えて、?の時の処理を考える
という方針でやるのは難しくなる傾向があります。
・二つの文字列が一致するかどうかを判断する
(一致するというのは、本当に等しいか、どちらか一方が?の時)
という方針だと、ちょっと楽です。
基本的な部分はできたということなので、その文字列を比較する部分に
if (a[i] == b[i]) ...
という感じ部分があると思います。
これは、「一文字が一致するかどうか比較する」ということなので、
「一致する」=(本当に等しいか、どちらか一方が?)
に書き換えると、
if (a[i] == b[i] || a[i] == '?' || b[i] == '?') ...
と言うことになります。
もう少し一般的には、これを、
if(isEqual(a[i], b[i])) ....
と、「等しいかどうか?」という関数を呼ぶ形にすれば、
int isEqual(char a, char b)
{
return (a == b);
}
や、
int isEqual(char a, char b)
{
if (a == b) return 1;
if (a == '?') return 1;
if (b == '?') return 1;
return 0;
}
など、いろいろな「一致」を統一的に処理することができます。
No.3
- 回答日時:
わからないけど、strcmp()に「 || *a=='?' || *b=='?'」を加えたこんな感じじゃないかなぁ。
//等しければゼロを返す
int hotcmp(char *a, char *b)
{
int judge;
while(*a && *b && *a==*b || *a=='?' || *b=='?') a++,b++;
if(*a>*b) judge=1;
else if(*a<*b) judge=-1;
else judge=0;
return judge;
}
No.2
- 回答日時:
考え方だけですが
再帰処理のロジック作って比較先・規格元のデータポインタさえ
きっちり管理してやればそれでできると思います
ロジックなんで作る人の自由ですが
変な条件で判定するよりそちらのほうがいいような気がします
サンプリ条件での流れ
1.比較データとして abc までを取得
2.比較先データ内に1のデータがあるかをチェック なければNULL あれば
比較終了位置のデータポインタを返す
3.2の戻り値がNULLなら不一致で終了 そうでないなら4へ
4.比較データのポインタを動かし次の有効データ ef を取得(1と同様)
5.比較先データ内に4のデータがあるかをチェック なければNULL あれば
比較終了位置のデータポインタを返す(2と同様)
6.3と同様
といった形で実現できそうな気がします
(1から3を再帰処理させ比較データ終わるまで実行する)
※ 細かく確認はしてませんので多少手直しが必要かとは思いますが
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するQ&A
- 1 c言語のプログラミングでキーボードから39文字以下の文字列を入力し、その文字列を逆順のスペルで表示す
- 2 c言語プログラムでキーボードからアルファベット大文字を入力するとAから入力した文字までのアルファベッ
- 3 配列へのキーボード入力
- 4 abcが、入力された文字列内にあるかどうかを表示するプログラム
- 5 c言語で「文字列(最大80文字)および整数nを入力すると,入力した文字列の末尾からn文字分が表示され
- 6 標準入力から文字列配列に格納
- 7 文字列配列をサブルーチンにアドレス渡ししてscanf入力
- 8 キーボードの入力としてOSに渡すプログラム
- 9 C#でキーボードの入力を自動で実行し繰り返すプログラム
- 10 WinApiを使って、キーボード入力をプログラムのみによって擬似的に再
関連するカテゴリからQ&Aを探す
おすすめ情報
人気Q&Aランキング
-
4
excelVBAからC#へsendmessage
-
5
文字列のswap
-
6
switch文で文字を比較すること...
-
7
CString型の文字列連結について
-
8
NULLの定義について
-
9
strcmp( )関数について教えて...
-
10
C言語においてコマンドプロン...
-
11
作ったプログラミングC何だけど...
-
12
決まった文字列幅でのスクロール
-
13
'const char *' 型は 'char *' ...
-
14
入力された文字列から整数だけ...
-
15
文字列がNULLか空文字列かの判定
-
16
c# デリゲート関連の命名について
-
17
szの意味
-
18
CStringのFindで文字列検索を行...
-
19
ヌル文字とは一体何でしょうか
-
20
str系関数を使わずに二つの文字...