• ベストアンサー

ファイルに行番号を追加

C言語の演習課題で困っておりまして、 質問させていただきます。 ファイル名をコンソールから指定し内容を1行ずつ読み込んだ後 行番号をつけて別のファイルに書き込むという問題なのですが 最初から壁にぶち当たっている状態です…。 どなたかご教授よろしくお願いします。

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

  • ベストアンサー
  • mk1234
  • ベストアンサー率30% (20/65)
回答No.6

#include <stdio.h> #include <stdlib.h> int main(void){ char file0[64]; char file1[64]; unsigned short i; char buff[256]; FILE *fp0; FILE *fp1; printf("\n\n"); printf("input file_name : "); scanf("%s", file0); printf("\n"); printf("output file_name : "); scanf("%s", file1); printf("\n"); printf("input:%s\n",file0); printf("output :%s\n",file1); if(NULL==(fp0=fopen(file0,"r"))){ printf("\7\n ng : %s\n",file0); exit(1); } if(NULL==(fp1=fopen(file1,"w"))){ printf("\7\n ng : %s\n",file1); exit(1); } for(i=0;i<1000;++i){ if(NULL==fgets(buff,255,fp0)){ break; } fprintf(fp1,"%5d: %s",i+1,buff); } fclose(fp0); fclose(fp1); }

hukken
質問者

お礼

回答ありがとうございます! 自分でも色々勉強しましたが、なるほど~こうやってやるんですね! 非常に良い参考になりました! ありがとうございました!

その他の回答 (5)

  • topper77
  • ベストアンサー率15% (3/19)
回答No.5

う~ん。。。詳しいほうじゃないんで、環境とかによって 変わってくると思いますが、僕の知ってるのんは、 %cat -n ファイル名|lpr って、実行とかするところでうったら、プログラムに 行番号を付けて印刷できるんですよ。 これを利用して、 %cat -n ファイル名 > 新しいファイル名 みたいな感じなことやったら、いけるかも? かなりアバウトなこと言うてすみません。。。 とりあえず、僕が言えることは、こうこうこうゆう 環境でCプログラム作ってます!ってのを質問に入れた 方がいいと思います!!

hukken
質問者

補足

回答ありがとうございます! GOOでの質問も初めてでして、、、色々いたらない部分 で皆さんを困惑させてしまったようです。 ご忠告肝に銘じます。

  • suezou3
  • ベストアンサー率12% (18/139)
回答No.4

プログラムの経験はどの位? strcat じゃなく sprintf を使った方が楽か。 sprintf 格納バッファ "%04d:%s" 行番号 読み込んだ行 こんな感じ(^o^)

hukken
質問者

補足

お返事ありがとうございます。 すいません、プログラム経験はまだ2週間なのです。 Cに至ってはポインタすら習っておりません… 具体的にどういった関数をどういった表現で記述する のか?という知識が絶対的に不足しております故

回答No.3

> 行番号を付加する方法に手間取っておりまして、、、 int lineNumber = 0; char line[256]; // ここに読み込む FILE* ifp = ... // 読み込むファイル FILE* ofp = ... // 書き込むファイル while ( ifpから一行分lineに読み込む ) { fprintf( ofp, "%04d: %s", ++lineNumber, line); }

hukken
質問者

お礼

回答ありがとうございます! なにぶん、ファイル操作を勉強し始めたのが 昨日という段階でして… 何はともあれ感謝致します!

  • suezou3
  • ベストアンサー率12% (18/139)
回答No.2

fopen,fclose,fgets,fputs,strcat このあたりの関数を使えば出来るでしょ。

hukken
質問者

補足

回答ありがとうございます。 下でも書きましたが、 行番号を付加する方法がわからない状態なんです。 そういった関数をどのように使うのか?という疑問点が 最大の難関になっておりまして、、

回答No.1

何がわからないのかを明記してください。 - ファイル名を得る方法ですか? - ファイルをオープンする方法ですか? - ファイルから読み込む方法ですか? - 行番号を付加する方法ですか? - ファイルに書き込む方法ですか? - ファイルを閉じる方法ですか? - コンパイルの方法ですか? - 実行の方法ですか?

hukken
質問者

補足

非常にあいまいな質問でしたね…。 ご指摘ありがとうございます。 行番号を付加する方法に手間取っておりまして、、、 よろしければ回答のほどお願いします

関連するQ&A