• ベストアンサー

文字列

yama5140の回答

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

No4 です。 >私は配列をs[256]と1つだけ用意し、 >テキストファイルから読み込んでいるのですが テキストファイルが、 january February march April Apple のようになっていると s[256] には最後の Apple だけが入り、 それ以前の行(レコード)のデータは上書きされてしまいます。 (まさか連結なんかしてないよね?←複雑そう) ★次のように、格納してからでないと・・・。 char cBuf[256], cStore[GYO][256]; while( NULL != fgets( cBuf, 256, fp ) ){  strcpy( cStore[iLine++], cBuf ); // 格納 } ・ (ソート) if( 0 < strcmp( cStore[i], cStore[j] ) ){ (入れ替え(別の配列に待避などで)) } (出力) ☆ソートについては、検索すればいっぱい出てきます。 -------------------------------------------------- ★前回の回答で、関数化できる部分がありました。  ・ Count26( cDevil, iCnt, 1 ); // 関数呼び出し Count26( cVinci, iCnt, -1 );  ・ } void Count26( char cWork[], int iCnt[], int iAdd ) {  int i, iCode;  for( i = 0; i < 32; i++ ){   if( 0x00 == cWork[i] ) break; // 文字列終わり   if( 0 == isalpha( cWork[i] ) ) continue; // 「英文字」判定   iCode = toupper( cWork[i] ) - 0x41; // 大文字化にして   iCnt[ iCode ] += iAdd; // 加減  } }

lockwell
質問者

補足

ご返答ありがとうございます! まず2つ目で質問です。 とりあえずキーボードから文字を入力し試しました。 printf("文字を入力\n"); scanf("%s", cDevil); scanf("%s", cVinci); そしてyama5140さんのおっしゃるようにプログラムを動かしてみたのですが、エラーが起きてしまいました。 「O, Draconian devil」のようにスペースを入れると、cDevilにO,が、cVinciにDraconianが入ってしまい、セグメンテーションエラーを起こしてしまいました。 私のこのやり方はまずかったでしょうか・・・? 2、スペースを入れなくても、どの文字を入力してもアナグラムではないと表示されてしまいます。 例えば単純に、erosとroseを入力してもアナグラムではないと表示されます。 3、関数ですが、矛盾と出てしまいました。 Count26( cDevil, iCnt, 1 ); Count26( cVinci, iCnt, -1 ); と、Count26が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 <検索文字列> あああ ※行内に「あああ」をみつけたらその行を丸ごと削除したい・・・