• ベストアンサー

文字列

yama5140の回答

  • yama5140
  • ベストアンサー率54% (136/250)
回答No.4

★1.は文字列群を昇順にソートし、ソート結果をファイル出力。  ・ソートでは strcmp() を用いる(戻り値、正負で大小判定)。 ---------------------------------------------- ☆質問者様の2.における例文字列、  「O, Draconian devil!」と  「Leonardo da Vinci!」を見ると、     , が一方のみに使われ、文字列長が異なる。   (プロポーショナルでの見かけの文字列長調整?)。  ことから、2つの文字列内をソートし、結果どうしを「比較」する方法では難しいと思います。 ★大文字・小文字を同じとして、26文字種の使用数をカウントし、  双方の使用数が同じかどうかで判定すれば、と思います。  a と A の使用数が iCnt[0] に入ります(◆)。  char cDevil[32], cVinci[32];  int iCnt[26] = { 0 }, iCode, i;  for( i = 0; i < 32; i++ ){ // cDevil   if( 0x00 == cDevil[i] ) break; // 文字列終わり   if( 0 == isalpha( cDevil[i] ) ) continue; // 「英文字」判定   iCode = toupper( cDevil[i] ) - 0x41; // 大文字化(◆)   iCnt[ iCode ]++; // 加算  }  for( i = 0; i < 32; i++ ){ // cVinci   if( 0x00 == cVinci[i] ) break;   if( 0 == isalpha( cVinci[i] ) ) continue;   iCode = toupper( cVinci[i] ) - 0x41;   iCnt[ iCode ]--; // 減算  }  for( i = 0; i < 26; i++ ){ // アナグラム判定     if( 0 == iCnt[i] ) continue;   printf( "アナグラムではありません\n" );   break;  } 注:インデントに全角空白を用いています。

参考URL:
http://e-words.jp/p/r-ascii.html
lockwell
質問者

補足

皆様ご回答本当にありがとうございます! 皆様のいうstrcmp関数を始めて知りました。全然勉強不足です。頑張ります! さて、1つ目ですが、strcmpの使い方を調べ数時間粘ったのですが、躓いてしまいました。 strcmpを使う場合、2つの配列が必要となりますよね。 しかしこの場合、私は配列をs[256]と1つだけ用意し、テキストファイルから読み込んでいるのですが、これだと比較をどうすればいいのかがわかりません。 配列を2つ用意しようとすると、今度はどうテキストファイルから文字を読み込み2つの配列に格納すればいいのかがわからなく躓いてしまいました。 これを解決する方法はありますでしょうか?

関連するQ&A

  • c言語のポインタ配列

    下記のようなポインタ配列が合った場合、 char *mnthp[4] = { "January", "February", "March", "April" }; Februaryに別の文字列を代入したいのですが、どうすればよいのでしょうか?

  • 文字列操作

    テキストを読みこんで、そのテキストにある単語を抽出するプログラムを作ろうとしています。単語の区切り文字はスペースかタブで、1文字ずつ読みこんで行こうともいます。 しかし、1文字ずつ読みこむ関数fgetcは返値がint型のようです。1文字ずつよみこみながら読みこんだ文字がスペースかタブで無いか見たいのですが、fgetcのint型返り値をchar文字列と比較するにはどうしたら良いでしょうか。

  • ファイルからある文字列の個数を数えたい

    perl5でunixの"wc"や"grep -c"みたいに1つのファイルの中からある文字列の個数を カウントするスクリプトを作ろうとしています。 ファイルは256文字×10万行くらいのテキストで、 検索する文字列は15文字前後×40個(例えば「apple-000001」「lemon_orange」など)です。 どのようなスクリプトを組んだら効率よく各文字列をカウントできるのでしょうか? それよりwcやgrep -cを40回行った方が早いのでしょうか?

    • ベストアンサー
    • Perl
  • テキストから文字列の抽出法

    テキストから文字列を抽出して、比較したいのですが、良いアプリケーションをご存じないでしょうか? 具体的には2つの異なるフォーマットのファイルがあり、それぞれに(同一の文字列かどうか)比較したい文字列は1行ずつソートされた形で含まれています。しかしその同じ行に時刻などの付加情報が含まれているため、行単位で比較することができないのです(行単位で比較できるアプリは知っています)。 文字列とはファイル名ですので、*.* の形で指定して、抽出できればと思うのですが... もしご存知の方がいらっしゃいましたら、教えてください。

  • C言語でアナグラムを求めるプログラム

    C言語初心者で、勉強中です。 今アナグラムを求めるプログラムをC言語で作成しています。 内容はあらかじめある英単語が書いてあるテキストファイルから互いにアナグラムとなっている英単語をすべて求めてそれを出力するというプログラムです。 どこから手をつけていいかわからず悩んでいます。 そこでヒントをいただこうと思って質問しました。 どなたか回答よろしくお願いします。

  • ACCESS 文字列の比較(完全一致)

    いつもお世話になってます。 A = "a" B = "A" IF A = B Then で文字列AとBを比較するとTrueになってしまいますね。でもここではFalseに判定して欲しいのです。 Option Compare Database を Option Compare Binary にすればFalseになるのはわかるのですが、他の箇所の比較に影響が出るのが怖いので、それはしたくありません。 文字列を完全一致で比較する方法があると思うのですが、調べてもわかりませんでした。 知っている方、どなたか教えてください。 ACCESS2000です。 よろしくお願いします。

  • 文字列を配列に…。

    VBはまだ始めたばかりで本当に初歩的なことかもしれませんが分かる方がおられたら是非教えて下さい。 text1.textから取り込んだ文字列を”一文字ずつ”(Dim a(100) as stringで宣言した)配列に格納したいのですがどうしたらいいのでしょうか?? <例>text1.textに"abc"と入力しcommandbuttonを押すとa(0)に"a"がa(1)に"b"がa(2)に"c"が格納されるといったかんじです。 ちなみに今私がしたいのはtext1.textに、ある文字列を入れその文字列を文字コードに変換しそれを一文字分ずつ+1してまたそのコードを文字に直しtext2.textに出力するというものです(ようは簡単な暗号化ですね)。 私はAscとChrコマンドを利用して1文字ずつコードをずらしていこうと思っているのですが、他に良い方法などあるのでしょうか?? 本当に初心者でどのようにしらたよいのか分かりません…。 どなたか分かりやすく教えていただけませんでしょうか?? お願いします。

  • エクセルファイルから指定列の文字を

    エクセルファイルから指定列の文字を、別のテキストファイルの特定の場所へ順番に差し替えたいです。 【例】 A列の文字→元からあるテキストファイルの内容そのままに、●という特定文字へ、住所1、住所2、住所3・・・ というようにエクセルの列に従って、順番に差し替えてくれる方法ってあるでしょうか? コピペだと大変です(涙) よろしくお願いします。

  • evernoteでpdfファイル内の文字列検索につ

    evernoteに取り込んだpdf内の文字列検索についてです。 テキストなどを取り込んだものの場合はそのノートの中の単語がハイライトで表示されますが pdfファイルだと、そのようには表示されません。 その単語が含まれるpdfファイルが検出されるだけなのでしょうか?

  • PowerShellでの文字列置換ができない

    PowerShellで「\」を含む文字列が変換できません。たぶん正規表現とかで問題があると思うのですが・・・ あとテキストファイル内の文字列置換で指定された文字列がある行があった場合、その行を削除するといったことは出来るのでしょうか? 詳しい方いらっしゃいましたらよろしくお願いいたします。 <テキスト> BBBB AAAA NNNN AAAAあああA NNNN AAAA <検索文字列> あああ ※行内に「あああ」をみつけたらその行を丸ごと削除したい・・・