文字列の比較方法と特定の文字列の取り出し方

このQ&Aのポイント
  • 現在Cでプログラムをつくっている中で、文字列の比較方法や特定の文字列の取り出し方について困っています。
  • テキストファイルの読み込みや書き込み、特定の文字列を取り出す処理について詳しく教えてください。
  • 数字の場合はif文を使って取り出すことができますが、文字列の場合はどのような方法が最適でしょうか。
回答を見る
  • ベストアンサー

文字列の比較

現在Cでプログラムをつくっているのですが いきずまってしまいました。 1.テキストファイルを読み込む 2.書き込みファイルを開く 3.読み込んだデータを一行読み込んで   その行の特定の文字列があれば、   特定の文字列のみ取り出し、   書き込みファイルに書く。    4.次以降の行も同じ処理をする。    5.読み込み、書き込みファイルを閉じる。 と、こんな感じのプログラムなのですが、 3の特定の文字列をどのように取り出せばいいのかわかりません。 取り出したいのが数字ならば、if文でできるのですが 文字列の場合は、どうなんでしょうか。 例えば、「MOJIRETU11」という取り出したいとき 数字と同じようにIF文を使用することは、できるのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • GOLDEN
  • ベストアンサー率46% (283/607)
回答No.1

文字列は通常の比較演算子(==等)では比較することはできません そのために、文字列比較用関数が用意されています 文字列が一致するかの比較:strcmp 文字列の先頭からn文字比較:strncmp 文字列a内に文字列bが存在するかのチェック:strstr 等・・・すべて、string.hをincludeする必要があります 関数名を入力して検索すれば、宣言もわかると思いますよ

slash758
質問者

お礼

早速の回答ありがとうございます。 いいことを聞きました。 プログラムのこれでプログラム完成に 一歩近づきました。

関連するQ&A

  • 特定文字列で囲まれた範囲を抜き書きするためには?

    特定の文字列で開始され、特定の文字列で終了するテキストの一部を抜き出すためには、コマンドラインからは perl -ne 'print if /開始文字列/ .. /終了文字列/' file.txt でできると思うのですが、これがたとえば $page 変数に入ったテキストで同様の処理を Perl 内部のスクリプトで行う時にはどうすればいいのでしょうか? while(<$page>){ ... } とかやって1行1行処理してみようと思ったのだけど、できません。

    • ベストアンサー
    • Perl
  • 文字列をそれぞれテキストに表示する方法(初心者)

    質問:アスキーコードへの変換について VB6(初心者) で質問したものです。 回答してくださったかたありがとうございました。 また質問します、どうかよろしくおねがいします。 文字列を文字ごとに分けてそれぞれテキストやラベルに表示したいのですがどのようなプログラムになるのでしょうか? 例 mojiretu=ABC があるとしてAはtext1にBはtext2にCはtext3にそれぞれ 格納します。 text1.text=A text2.text=B text3.text=C mojiretuは変数文字列とします。 A、B、Cは変数ではなく普通の文字です。 テキストひとつに文字を全部いれるには mojiretu = ABC text1.text = mojiretu でいいと思うのですが、上の例がよくわかりません。 このことが書いてあるサイトでもいいのでどうか教えてくださいおねがいします。

  • Rubyの正規表現について教えてください

    配列に文字列を格納し、先頭が大文字または数字の文字列だけ別の配列に入れようとしています。 次のようにプログラムを作ったのですが、ifの行でエラーが出ます。 何が間違ってますか? mojiretu_array.each{|mojiretu| if mojiretu =~ [^a-z]\w+ mojiretu_out.push mojiretu end }

  • 多数のテキストファイルからの文字列の取り出し

    いま、わたしが持っているヴィジュアルベーシックは VB6.0です。PCはノートで、OSはXPです。 課題: あるフォルダーに1000くらいのテキストファイルがあって、 その各テキストファイルから たとえば、「「不特定長さの文字列1」」・・・・・・・・((不特定長さの文字列2)) の不特定長さの文字列1と不特定長さの文字列2を とりだし、 それをファイル名「まとめ表」というテキストファイルに ファイル名    文字列1   文字列2 ファイル1   あいうえお  かきくけこ ファイル2   さしすせそ  たちつてと  ・         ・        ・  ・         ・        ・ のように書き込むというプログラムを作成したいのですが、 できるでしょうか? できるとすると、 プログラムの およその考え方と 使用する命令語はどのようなものになりますか? ご回答をおまちしております。 よろしくおねがいいたしますm(__)m

  • ファイルから文字列を読み出して、比較する方法

    ./log.dat に以下のように数行のログが記録されています。 文字列a<>ipアドレスa 文字列b<>ipアドレスb 文字列c<>ipアドレスc 上記ログ内に$wordに指定された文字列が含まれている場合の処理を行いたいのですが、この場合はどのように書けばよろしいのでしょうか。 $word = "文字列b<>ipアドレスb"; if ($word !~ ログ内容) {処理} ↑のように色々試してみましたがうまくいきません。Perlの知識は素人並みです。宜しくお願いいたします。

    • ベストアンサー
    • Perl
  • 【Teratermマクロ】文字列の一致比較について

    If文を用いて、文字列同士が同じかを確かめたいのですが If文では数字のみしか比較できないらしいということがわかりました。 Teratermの場合、他の方法などで文字列の一致を確認できないのでしょうか? ご存知の方がいらっしゃいましたら、是非教えて下さい。

  • 行ごとでなく文字列を区切りにファイルを読み込む

     非常の大きなテキストファイルを、1行1行ではなく、特定の文字列、 できれば正規表現を区切りとして、100行ぐらいをまとめて順次読み込みたいのですが、 どのようにすればいいでしょうか。よろしくお願いします。

    • ベストアンサー
    • Java
  • ページの中から文字列を取り出すメソッドってある?

     なんか昔、図書館から借りてきた本で読んだような。。。  インターネットのホームページを見ていてそのページの中からある特定の文字を検索するプログラムを作りたいのですが、  そういうメソッドはないのでしょうか?もしあったらメソッド名を教えてください。  また、普通のテキストファイルからある特定の文字列を取り出すメソッドもあったら教えてください。  よろしければ、5~6行のコードも書いていただければありがたいです。 宜しくお願いします。

    • ベストアンサー
    • Java
  • 文字列の中の1文字を比較するには?

    XP,Studio.NETでC++を書いています。 文字列の中の1文字を比較したいのですがどのようにしたらいいのかわかりません。 今以下のような文字列がstring[300]に入っているとします。 「\nは改行コードです。printf("");では"から"までの文字が画面に表示されます。」 このとき、1文字ずつを取り出し、文字を比較したいのですが (iを増加) if(string[i]=='\') flag=1; //処理→次にnが来る。 if(string[i]=='"') flag=2; //処理→文字はダブルコーテーション という処理をしたいのですが、 エラー:定数が多すぎます。 エラー:定数が2行目に続いています。 と出ます。どうしたらいいのでしょうか? どなたか教えていただけると幸いです。

  • 2つの文字列を比較する方法

    二つの文字列を比較して違う箇所を発見したとき 何らかの処理を行うようなプログラムを書きたいのですが、 私の想像力が貧困な為そのアルゴリズムを考え付く事ができません どなたか知恵を貸していただけないでしょうか? 具体的には以下のようなことをやっています。 私は現在,変数で var exStr1="||||||||||+|1|2|3|4|5|6|7|8|9|+||||||||||"; var exStr2="||2||||||||+|1||3|4|5|6|7|8|9|+||||||||||"; と宣言しているとき私は exStr1とexStr2では文字列の何処が違うか知る処理を知りたいのです。 とりあえず今私は変数X1とX2に X1 = exStr1.split("+"); X2 = exStr2.split("+"); として「+」を区切り文字にして配列に入れてみて 更にソレを「|」で区切りなおしてみてます。 for(i=0;i<10;i++){   Y1 = X1[i].split("|");   Y2 = X2[i].split("|"); } そこで違う場所を探すための処理として私は以下のように書いて見ました。 しかし現在全然動いてくれません。 for(i=0;i<10;i++){   if(X1[i] != X2[i]){     for(j=0;j<4;j++){       if(Y2[j] != Y1[j] && Y2[i]==""){         //ここで何らかの処理をしたい。しかし今はif文の条件がおかしいのか、この行の処理に入らない。       }     }   } } う~。なんか質問の域を越えてるとも思いますし、 それに我ながら質問の意味がわかりづらいとは思うのですが お願いします。なんらかのヒントのようなものでも頂けたら幸いです。

専門家に質問してみよう