• ベストアンサー

C言語のファイル処理 C言語

指定したファイルのなかの文字列を表示させたいです。 最後の2行だけ表示させたいのですが、どうやっていいのかわかりません。。。また、それ2行を、入力した出力ファイルに書き込みたいのですが・・、どうやって指定したらいいのでしょうか?? わかる方よろしくです(><)

noname#9404
noname#9404

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

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

>最後の2行だけ表示させたいのですが 2行文のバッファを用意し、ファイルを一行ずつ読みバッファの内容を更新していけば良いのでは? なんとなくなフロー char buffer[],last[],last2[]; FILE *fp; fp = fopen(・・・) while(fgets(buffer, sizeof(buffer), fp) != NULL){ strcpy(last2, last); strcpy(last, buffer); } printf("%s\n%s\n", last2, last); >また、それ2行を、入力した出力ファイルに書き込みたいのですが・・ もう少し具体的に書いていただいた方がわかりやすいと思いますが・・・

その他の回答 (2)

  • mssine
  • ベストアンサー率24% (38/156)
回答No.3

ちょっと回答からは外れちゃいますが、unixでいうtailコマンドで同じことが出来ます。 tail -2 in_file >out_file

回答No.2

入力した出力ファイルって、ファイル名を入力して もらうという意味なら、scanfとかでファイル名を 指定してもらってfopenでファイルを作成して No.1の方の最後の行のprintfをfprintfにすれば できると思います(最後はfclose)。 もし、入力した出力ファイルというのが、今読んだ ファイルのことであれば、fseekで先頭に戻って、 上記fprintfで書き込んで、fcloseかな。

関連するQ&A

  • C言語についてです。

    C言語についてです。 次のようなテキストファイルがあるとします。 ------------------------------------- Sample.txt ------------------------------------- 項目一  項目二  項目三 1      2     1 2      1     3 3      3     1 ------------------------------------- 一行目が文字列、2行目以降が整数というファイルです。 このファイルを読み込み、1行目の文字列を表示し、2行目以降を読み込んでn行3列の配列に入れ更に表示したいのですが、どのように書けばいいのでしょうか? 宜しくお願いします。

  • C言語をなるべく早く教えてください

    C言語の問題集の回答がないので困っているので誰か教えてください。 私はまだ始めたばかりなので手におえません。 今私が理解しているif文、switch文、for文、while文、do-while文、配列、を 使用してでお願いします。 入力した行列を表示させるプログラムを作成しなさい。ただし、行列は任意に指定できるものにし、表示のさせ方にも気を付けること。 実行結果例1 N×M行列数を入力してください N=3 M=2 3×2行列を入力して下さい 1行1列を入力して下さい 1 1行2列を入力して下さい 2 2行1列を入力して下さい 3 2行2列を入力して下さい 4 3行1列を入力して下さい 5 3行2列を入力して下さい 6 入力した3×2行列は次のようなものです 1.00 2.00 3.00 4.00 5.00 6.00 <実行結果例2> N×M行列数を入力してください N=3 M=4 3×4行列を入力して下さい 1行1列を入力して下さい 1 1行2列を入力して下さい 2 1行3列を入力して下さい 3 1行4列を入力して下さい 4.23 2行1列を入力して下さい 5.1224 2行2列を入力して下さい 92.12 2行3列を入力して下さい 2.12 2行4列を入力して下さい 36.54 3行1列を入力して下さい 2.213 3行2列を入力して下さい 9.56 3行3列を入力して下さい 8 3行4列を入力して下さい 5.23153 入力した3×4行列は次のようなものです 1.00 2.00 3.00 4.23 5.12 92.12 2.12 36.54 2.21 9.56 8.00 5.23

  • C言語でファイルからの文字列抽出について

    C言語でファイルからの文字列抽出について INPUTファイルからキーワードを探し、キーワードがあった行をOUTPUTファイルに出力したいのですが、どうしたら良いかわかりません。 //一行ずつ読み込む while(fgets(buf,sizeof(buf),fp)!=NULL){ //文字列からキーワードを探す //キーワードがある一行をOUTPUTファイルに出力 } こんな感じになると思うのですが、どういうコードを書いたら良いかわかりません。 分かる方いらっしゃいましたらご回答宜しくお願いします。

  • 【C#】文字列の最後に改行を入れていく処理

    【C#】文字列の最後に改行を入れていく処理 C#初心者です。 ファイルを一行読み込むごとに、行の最後に改行\nを入れ、最後にその文字列を繋げ、出力したいのですが、やり方がわかりません。 結果は abcdefg hijklmn opqrstu のようになってほしいです。 分かる方いらっしゃいましたら教えていただけると幸いです。 宜しくお願いいたします。

  • C言語のプログラミングですが、

    C言語のプログラミングですが、 255文字以内の文字列をキーボードから入力して、下記の各処理を行うプログラム(※入力した文字データは配列に入力)はどのようにしたらいいでしょうか?(入力例:acFNkeexFFg) ・入力した文字列の最後の文字を出力 ・入力した文字列⇒逆に並べ替えて出力 ・入力した文字列⇒縦に出力(1文字ずつ) ・入力した文字列の中に「F」が何個あるか ただし、使えるのはfor文・配列・if文ぐらいでそれ以上レベルの高いものは使わないで下さい。 … char str[255]; int i,n,na,nb,nc; printf("Input Strings= "); scanf("%s",str); for(i=0;str[i]!='¥0';i++){ n=i; } printf("The last character= %c",str[n]); くらいまでしか分かりません…

  • C言語について

    丸投げ的な質問は本当にすいません。m(_ _)m 恥ずかしいことをしましだが、教えてください。 1.WinXP 2.変更前のデータ(ファイル) 3.変更後のデータ(ファイル) 4.変更させるルール ア.データの中から"YYYY"を検索します。  イ.文字列"AAAA"がある場合は"YYYY"上の行の文字列("BBBBB")を"AAAA"の下に入れます。(N?????は変更なし)  ウ.次の"YYYY"を検索して上の行の文字列("CCCCCC")を前の"YYYY"下にいれます。  エ.イとウをデータの最後まで繰り返して元のファイルに保存します。

  • c言語:ファイルのアクセス場所指定

    指定したファイルの中身の、文章の最後の8行を、出力ファイルに書き出すプログラムを作っています。 まず、fseek(file_p, -1, SEEK_END);でファイルの読み込み位置を一番最後にして、そこからループで8行分を数え、8行目の最初から書き出していけるようにしたいのですが、ループ処理の方法がわかりません。 どうしたら最後から8行を数えることができますか?

  • C言語で困っています...

    入力した数値の列だけ○と×を縦に、段々になるように表示する (最後の行は×にならなければいけない)プログラムを作成しています。 (実行例) ○と×を表示します。何列?:10            ×           ○×          ×○×         ○×○×         ×○×○×       ○×○×○×      ×○×○×○×    ○×○×○×○× ×○×○×○×○× ○×○×○×○×○× 途中までプログラミングできたのですが、 偶数の数値を入れたときはきちんと最後の行は×になっても 奇数の数値を入力すると○が最後の行になってしまい、うまくいきません。 どこがだめなのでしょうか? どなたか教えてください。 /* 入力した数値の列だけ、○と×を縦に、   段々になるように表示する(最後の行は×になる) */ #include <stdio.h> int main(void) { int i, j, n; printf("○と×を表示します。何列?:"); scanf("%d", &n); for (i=0; i<n; i++){ for (j=0; j<n; j++){ if (j >= (n - 1) - i){ if (j % 2 == 0) printf("○"); else printf("×"); } else printf(" ");//全角スペース } printf("\n"); } return 0; }

  • 複数ファイルのデータを1つのファイルへ纏めるマクロ

    マクロの実行で、Excel形式の約400個のファイル中のデータを1つの出力ファイルへ纏める為のマクロを作成したいのですが、VBAの初心者で、スクリプトの書き方が分からず大変困っております。 入力ファイルの中身は頻繁に追加、削除を繰り返しており、そのたびに入力ファイルを目視確認後、出力ファイルを手動で修正している状況でございます。 大変お手数ですが、マクロがお分かりの方がいらっしゃいましたら、ご教示を宜しくお願い致します。 ・入力ファイルは、以下ような名前になっております。 課題参加者_23RF3001.xlsx 課題参加者_23RF3005.xlsx 課題参加者_23RF3072★.xlsx 課題参加者_23RF3073.xlsx 課題参加者_23RF3199.xlsx 課題参加者_23RF3543.xlsx ・入力ファイルのデータは、添付しました画面イメージの通りで、  フォーマットは全て同じです。 ・出力ファイルに吐き出す入力データはB列~K列とN列になります。 ・出力ファイルのタイトルは、1番目に呼び出したファイルのB列~K列とN列を使う。 ・出力ファイルのA列のデータは、入力ファイル名の『23RF3001』、『23RF3543』などを入力データ分入れる。 ・出力ファイルのタイトルに使う、入力ファイルのタイトルは以下のようになっています。   B列~E列のタイトルは、6行目、7行目が結合されたセルに入っています。  F列のタイトルは、5行目、6行目、7行目が結合したセルに入っています。  G列~H列のタイトルは、6行目、7行目が結合されたセルに入っています。  I列~K列のタイトルは、7行目のセルに入っています。  N列のタイトルは、6行目、7行目が結合されたセルに入っています。 ・出力ファイルへ吐き出したい、入力ファイルデータの範囲は、  B列~K列の8行目以降とN列の8行目以降のデータになりますが、  『職員番号』、『名前』、『部門』に記載が有る行のみを出力ファイルへ吐き出します。  N列はリストの最後の行まで文字が入力されていますが、  N列についても、上記の『職員番号』、『名前』、『部門』に記載が有る行のみを出力ファイルへ吐き出します。 ・出力データへ吐き出す時の書式フォーマットは以下の通りになります。  A列=文字形式  B列=数値形式  C列~F列=文字形式  G列、H列=日付形式  I列~K列=チェックボックス(フォームコントロール形式(入力データと同じ形式))  N列=文字形式 ・入力データは今の所50行まで入力可能としています。

  • C言語のアルゴリズムについて

    C言語で「標準入力から英語の文章を読み込んで,文字列Ilmorが出現した行をその行番号とともに表示するプログラムを作りなさい.」とプログラムを作りたいのですが、文字列を発見するところまでは分かるのですが、その行どうやって表示すればいいのか分かりません。また、文章を読み込むのもすごくややこしく最後にエンターを二回押すなどの制限があります。(scanf) 参考になるプログラムを書いていただける方いませんか?できればC言語のアルゴリズムについて詳しく書いた本やサイトがあれば教えていただきたいです。 レベルは超入門的な本を2,3冊読んだ程度です。アルゴリズムなどにはまったく触れてなかったし、ライブラリー関数も少ししか載ってなかったので関数の本もあれば教えていただきたいです。

専門家に質問してみよう