プログラムを実行するとエラーが出ます。
$ data_add data_tel.txtで実行すると「ファイルの内容を書き込んで下さい。」と出て
sudou ,090-3333
kitou ,080-1342と打ち込むと、“data_tel.txt”ファイルに書き込みました。
と表示されるようになりました。sudouがudouになぜなるかまできました。
よろしくお願いいたします。
コード // ファイルの新規書き込み // コマンドラインに引数としてファイルを指定し、 // ファイルに内容を書き込む。 // 指定されたファイルが存在する場合は、その内容をゼロにする。 // data_add.c #include<stdio.h> #include<string.h> //for strcmp,strstr #include<stdlib.h> //for exit #define CTRL_Z 26 int data_add(char*); int main(int argc,char *argv[]) { fprintf(stderr, "Check\n"); if (argc != 2) { puts("error01:[使用方法]:<プログラム名> <ファイル名>"); return 1; } return data_add(argv[1]); } int data_add(char *filename) { FILE *fp1; char ch1; if ((fp1 = fopen(filename, "w")) == NULL) { puts("error01:ファイルを開くことができません。"); return 1; } puts("ファイルの内容を書き込んで下さい。"); puts("プログラムを終了するときは「Ctrl + z 」を押します。"); getchar(); //改行消去 while((ch1=getchar()) != EOF) { if (fputc(ch1,fp1) == EOF) { printf("error01:ファイルに書き込めません\n"); fclose(fp1); return 1; } } if (fclose(fp1) == EOF) { puts("error01:ファイルを閉じることが出来ません\n"); return 1; } printf("\n“%s”ファイルに書き込みました。\n", filename); return 0; } 実行結果 naka@naka ~/kadai/kadai9-8 $ gcc -g -o data_add1 data_add1.c -Wall naka@naka ~/kadai/kadai9-8 $ data_add1 data_tel.txt Check ファイルの内容を書き込んで下さい。 プログラムを終了するときは「Ctrl + z 」を押します。 sudou ,090-3333 kitou ,080-1342 ^Z “data_tel.txt”ファイルに書き込みました。 naka@naka ~/kadai/kadai9-8 $ data_tel.txt sachiko ,090-0809 naka ,090-7777 kiyoko ,090-9999 satou ,090-3214 kinosita ,090-8769 yamada ,090-4325 itou ,080-6354 udou ,090-3333 // 追加されたデータ kitou ,080-1342 // 追加されたデータ data_tel.txtはsudouと入力したのに、左に1個ずれているみたいです。 電話番号が1個ひだりにずれています。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/01/04 04:50
退会済みユーザー
2018/01/04 06:34
2018/01/04 07:54
退会済みユーザー
2018/01/04 13:40