前提・実現したいこと
コマンド行引数として与えられたファイル名をもつファイルの中身を調べ、 その行数と文字数(改行文字も文字として数える)とをこの順に標準出力に書き出します。 行数と文字数は、それぞれ、左詰にして1行として書き出します。
コマンド行に引数が1個与えられたのでないときは、 「argc!=2」と左詰にして1行として標準出力に書き出すとともに、 コマンド行に与えられた引数全てを、与えられた順に、 それぞれ左詰にして1行として標準エラー出力に書き出し、 その後で exit(-1); によって実行を打ち切ります。また、引数が1個与えられていても、それをファイル名としてファイルを開くことができなかったときは、標準出力に「can't open:」の後ろに空白1文字に続けてその引数を書き出して改行したのちに、exit(-1); によって実行を打ち切ります。
発生している問題・エラーメッセージ
思う通りに動作しません。
該当のソースコード
#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { #define LINESIZE 100 FILE *f; char line[LINESIZE]; int i; int x; int n; if( argc!=2 ) { printf("argc!=2\n"); for(i= 1; i<argc; i++) { fprintf(stderr, "%s\n", argv[i]); } exit(-1); } n= atoi(argv[1]); f = fopen(n, "rw"); if( argc==2 && f== NULL ) { for(i= 1; i<argc; i++) { printf("can't open: %s\n", argv[i]); } exit(-1); } for(i= 1; fgets(line, LINESIZE, f)=='\n'; i++) { for(x= 0; line[x]!=NULL; x++); } } printf("%d\n%d\n", i, x); fclose(f); return 0; }
補足
一応自分でも書いてみました。ご教授お願いします。
ここにより詳細な情報を記載してください。
![guest](/img/icon/icnUserSample.jpg)