###前提・実現したいこと
ここに質問したいことを詳細に書いてください
詳細設計書を作成して見るという課題で、ファイルI/Oがあるものを作ろうと考えました。
ファイルの読み込み、作成をし、作成したファイルに行番号が振られるプログラムで、最後に書き込んだファイルのテキストを出力したいのですがうまくいきません。
またファイルI/Oにおける出力とは、ファイルの中身を出力することなのか、ファイルを出力(作成、書き出し)することなのかもよくわかっていません。
###発生している問題・エラーメッセージ
プロンプトで実行すると表示はへへへへへへへへへへへへと壊れている。
また、作成されたファイルには行番号が追加されるものの、後ろにへへへへへへへとつく。
エラーメッセージ
###該当のソースコード
#include <stdlib.h> #include <stdio.h> #define LINEMAX 100 void addLineNumber(FILE *fpr, FILE *fpw) { char lineBuffer[LINEMAX]; // 一行分の文字列を格納するバッファ int lineNum = 1; while (fgets(lineBuffer, LINEMAX, fpr) != NULL) { fprintf(fpw, "%02d: %s", lineNum, lineBuffer); lineNum++; } } int main(int argc, char* argv[]) { FILE *fpr, *fpw; char str; /* コマンドライン引数チェック */ if (argc != 3) { fprintf(stderr, "usage: %s inputfile outputfile\n", argv[0]); exit(1); } /* 入力ファイルオープン */ if ((fpr = fopen(argv[1], "r")) == NULL) { perror("Input file error"); exit(1); } /* 出力ファイルオープン */ if ((fpw = fopen(argv[2], "w")) == NULL) { perror("Output file error"); exit(1); } /* 行番号付加 */ addLineNumber(fpr, fpw); //ファイルの終端まで読み込み、一文字読み込み、格納、出力する while ((str = fgetc(fpw)) != EOF) { printf("%c", str); } /* ファイルクローズ */ fclose(fpr); fclose(fpw); return 0; //正常終了の場合,戻り値は0 } sample.txtとして使用するものはこちらです。 Hello. My name is Taro. I want to money. Thank you.
###試したこと
出力のコードが間違っているかたしかめるため、読み込んだ後にすぐ入れてみると、出力はされましたが、書き込みファイルに行番号がはいったものが格納されませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/23 06:28