• 締切済み

テキストファイルを分割するプログラム

テキストファイル中の冒頭4文字をファイル名にしてファイルを分割するプログラムを作りたいのですが、よくわかりません。 たとえば、テキストファイルのデータが aaaABC bbbDEF のとき、 ファイル名がaaa.txtで、データがABC のファイルと ファイル名がbbb.txtで、データがDEF のファイルが作成されるようにしたいのです。どのようにすればいいのでしょうか?

みんなの回答

回答No.3

>たとえば、テキストファイルのデータが > >aaaABC >bbbDEF > >のとき、ファイル名がaaa.txtで、データがABCのファイルと >ファイル名がbbb.txtで、データがDEFのファイルが作成されるようにしたいのです。 やってること(↓)がわかって下さればよろしいかと m(_ _)m /* 実行 ./a.out TextFile */ #include <stdio.h> /* fopen(),sprintf() */ #include <string.h> /* strtok() */ #define SIZE 64 #define LEN 3 int main(int argc, char *argv[]) { char buff[SIZE], work[SIZE]; int temp; FILE *fp, *wp; if((fp = fopen(argv[1], "r")) == NULL) return 0; while(fgets(buff, SIZE, fp) != NULL){ strtok(buff, "\n"); printf("TextFile [%s]\n", buff); temp = buff[LEN]; buff[LEN] = '\0'; sprintf(work, "%s.txt", buff); printf("sprintf(work, '%%s.txt', buff); -> [%s]¥n", work); printf("wp=fopen(work, 'w');\n"); buff[LEN] = temp; printf("fprintf(wp, '%%s\\n', buff + LEN); -> [%s]\n", buff + LEN); printf("fclose(wp);\n\n"); } fclose(fp); return 0; } ----- 実行結果 ----- TextFile [aaaABC] sprintf(work, '%s.txt', buff); -> [aaa.txt] wp=fopen(work, 'w'); fprintf(wp, '%s\n', buff + LEN); -> [ABC] fclose(wp); TextFile [bbbDEF] sprintf(work, '%s.txt', buff); -> [bbb.txt] wp=fopen(work, 'w'); fprintf(wp, '%s\n', buff + LEN); -> [DEF] fclose(wp);

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

本題は #1 の通りだけど.... 「テキストファイル中の冒頭4文字をファイル名にして」と書いているにもかかわらず, その下の例では「先頭 3文字」をファイル名にしているように見えます. どっち?

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

1) テキストファイルを開く 2) 1で開いたファイルから1行読み込む 3) 2で読み込んだ行の先頭3文字を切り出す 4) 3で切り出した文字+".txt"の文字列を作る 5) 4で作った文字列のファイルを開く 6) 2で読み込んだ行の4文字目以降を切り出す 7) 5で開いたファイルに6で切り出した文字を出力 8) 5で開いたファイルを閉じる 9) 1に戻る という風にすればおkですよ

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • dosでサイズを比較して異なるファイルだけコピー

    dosで全フォルダ内のファイルサイズを比較して異なるファイルだけコピーしたい 次のようなファイル構成で AAAフィルダ    BBBフォルダ  cccフォルダ    cccフォルダ   abc.txt      abc.txt   def.jpg      def.jpg  dddフォルダ    dddフォルダ   ghi.txt      ghi.txt   jkl.jpg      jkl.jpg AAA\ccc\abc.txtとBBB\ccc\abc.txt AAA\ccc\def.jpgとBBB\ccc\def.jpg AAA\ddd\ghi.txtとBBB\ddd\ghi.txt AAA\ddd\jkl.jpgとBBB\ddd\jkl.jpg 拡張子は問わずそれぞれに対するファイルのファイルサイズを比較して 大きくても小さくても異なるファイルだけbbbフォルダ内に上書きコピー したくご教授をお願いします

  • テキストファイルの任意の文字以降の文字列を削除したい

    test.txt AAA+あいうえお BBB+かきくけこ CCC+さしすせそ DDD+たちつてと EEE+なにぬねの 上記(test.txt)のようなテキストファイルから、各行の+以降の文字列を削除して、 以下(result.txt)のようなテキストファイルを生成させるプログラムを作成させたいです。 result.txt AAA BBB CCC DDD EEE このようなプログラムを作るにはどのようにすればよいでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • perlでのcsv形式のテキストファイルの変換

    perlを使用してcsv形式のテキストファイルを下記のように変換したいと思っています。 【変換前】 10, abc , def , ghi ,jkl    ----1行目 10, abc , def , aaa, bbb   ----2行目 10, abc , def , ccc , ddd  ----3行目 11, abc , def , eee , fff   ----4行目 11, abc , def , aaa , ggg ----5行目 11, zzz , def , aaa , ggg  ----6行目 12, abc , def , aaa ,ggg ----7行目 12, zzz , def, aaa , ggg   ----8行目 【変換後】 10, abc , def , ghi ,jkl    ----1行目 11, abc , def , eee , fff   ----4行目 11, zzz , def , aaa , ggg  ----6行目 12, abc , def , aaa ,ggg ----7行目 12, zzz , def, aaa , ggg   ----8行目 変換内容はcsv形式のテキストファイルで、”,”で区切った先頭3列が 前の行の先頭3列と同じならその行は出力しない、といった 変換をしたいと思っております。 (例えば2行目ですと先頭3列は10, abc ,defになっており、  1行目の先頭3列と同じ文字列になっているためこの行は出力しない) 当方、Perl初心者で上記のようなことがPerlでできるかも よくわかっておりません。 そこで、上記のような変換はPerlで可能なのか、そしてもし可能であるのなら どのようにPerlで記述すればできるのか教えていただけないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 複数のテキストファイルを1つにまとめる

    同一フォルダ内にある複数のテキストファイルの内容を1つにまとめる方法を探しております。 例えば、 a.txt, b.txt, c.txt が同一フォルダにあり、 それぞれの内容が AAA BBB CCC である時に、これらをまとめて matome.txtとして、その内容が AAA BBB CCC となるようなプログラムを書きたいのですが、どの様な方法が考えられますでしょうか。 上の例では3つのテキストファイルですが、実際に処理したいファイルは数百個になる為、一つ一つファイル名を入力する作業が大変で困っております。 同一フォルダ内のファイルをファイル名順に一度に読み込み、まとめる方法がありましたらお教え下さい。

  • バッチファイルでファイルを比較後他のフォルダにコピ

    次のようなファイル構成で C:\AAA     C:\BBB   \ccc      \ccc    abc.txt    abc.txt    def.jpg    def.jpg   \ddd      \ddd    ghi.txt    ghi.txt    jkl.jpg    jkl.jpg C:AAA\ccc\abc.txt と C:BBB\ccc\abc.txt を比較 C:AAA\ccc\def.jpg と C:BBB\ccc\def.jpg を比較 C:AAA\ddd\ghi.txt と C:BBB\ddd\ghi.txt を比較 C:AAA\ddd\jkl.jpg と C:BBB\ddd\jkl.jpg を比較 全てのファイルに対し比較後C:\CCC(別のフォルダ)に階層を含めコピーしたく for /R %%A in ("C:\AAA") do for /R %%B in ("C:\BBB") do if %%~zA NEQ %%~zB (goto A) :A echo NEQ としましたがループしてしまいました 比較後C:\CCC(別のフォルダ)に階層を含めコピーする方法も含め ご教授をい願いします

  • テキストファイルについてのプログラム

    初めまして、VC++2005を使っているプログラム初心者です。 windowsフォームアプリケーションというテンプレートを使ってプログラムを作成したいと考えているのですが、どのようにすればよいのかわからず質問しました。ご指導していただけると嬉しいです。 まず、test.txtというテキストファイルの中に以下の内容があります。 8:00  朝食 12:00 昼食 15:00 おやつ 19:00 夕食 というデータです。 このデータをボタンをクリックするとテキストファイルを1行ずつ読んで行き、15:00という文字が出たらテキストボックスに「おやつの時間」というものを表示する方法とまたそのテキストファイルの内容全体を別のテキストボックスに表示したいのですが、どのようにすればよいのでしょうか? fscanfやfopenなどを使うのですが、どうしてもうまくいかないのでよろしくお願いします。

  • 外部パラメータを使用したファイルの作成・書き込み

    テキストファイルに以下の内容が書かれています。 ファイルパス:/aaa/bbb/ccc ファイル名:ファイル.txt これを読み込んで $filepath = /aaa/bbb/ccc $filename = ファイル.txt となっています。 この時(「ファイル.txt」は存在しません。)、以下のような処理を行うと「/aaa/bbb/ccc」ではなく、「/aaa/bbb」に「ファイル.txt」が作成されるのですが、なぜでしょうか?? open(TXT, ">> $filepath/$filename"); flock(TXT, 2); print TXT $header; flock(TXT, 8); close(TXT); この処理の前に$filepathの値を調べましたが、確かに「/aaa/bbb/ccc」となっています。 何か注意する点や、ここが問題では?と言うようなことがあれば教えてください。

    • ベストアンサー
    • Perl
  • テキストファイルを1行ずつ別のファイルに分割する

    400行ぐらいのテキストファイルを、1行ずつ別のファイルに分割したいと思います。 ファイル名は**001.txtのように、(**は任意の文字列、数字は連番)なってくれれば嬉しいです。 どなたかこのような処理のできる簡単な方法をご存じないでしょうか? よろしくお願いします。

  • テキストファイルを分割&ページ数を追記しHTMLファイルにするプログラム

    テキストファイルを分割&ページ数を追記しHTMLファイルにするプログラムを教えてください。 (Perl/Ruby/Pythonのいずれかで) テキストファイルを分割&ページ数を追記しHTMLファイルにするプログラムを教えてください。 (Perl/Ruby/Pythonのいずれかで) 手元にあるテキストファイルを指定の行数(もしくは文字数)で分割しHTMLファイルにしたいと考えています。 [sample.txt(10分割)→1.html~10.html] フリーの分割ソフトはあるようですが ・分割とHTML化を同時にしたい ・ページ下部にファイルに対応したページ番号がつけたい  (1.htmlの下部に:<p>1ページ</p>のようなイメージ) ・最近プログラミングの勉強をしていていろんなコードを見てみたい という理由で利用しないつもりです。 何卒よろしくお願いいたします。

  • ファイル操作について、テキストファイルの書き換え

    よろしくお願いします。 データファイルAからデータを取得して、テキストファイルBの内容の一部を取得したデータで書き換えるという操作を行うプログラムを作りたいです。 具体的には、 データファイルA[A.txt]の中身 111 222 333 444 テキストファイルB[B.txt] 文字列1="123" 文字列2="234" 文字列3="345" 文字列4="456" というような二つのファイルを読み込み、B.txtの""で囲まれた部分を、A.txtで取得したデータで置き換えるような操作を行いたいのですが・・。 使用する言語としてはスクリプト言語であるperl、もしくはプログラム作成経験があるCを使用しようと思っています。(perlは未経験で入門書を読んでいるレベル)

    • ベストアンサー
    • Perl
Wi-Fi接続できない原因と解決方法
このQ&Aのポイント
  • Wi-Fi接続できなくなった原因として、パスワードの誤入力が考えられます。プリンタの無線ラン設定画面からパスワードを正確に入力することで接続できる可能性があります。
  • Wi-Fi接続できない場合、まずはプリンタとの接続を確認してください。プリンタの電源を入れ、接続状態を確認しましょう。また、Wi-Fiルーターの再起動や設定の確認も行ってみてください。
  • Wi-Fi接続に問題がある場合、EPSON社製品のサポートに問い合わせることをおすすめします。専門のスタッフが問題の解決方法を教えてくれる可能性があります。
回答を見る

専門家に質問してみよう