2012-04-17 6 views
1

私は自分のコードでエラーチェックを行い、与えられた引数が有効なファイルであることを確認しようとしています。次のコード、fileInがnullで、nullではないことを言っているので、基本的 Cでのargv [i]からのfopenのエラーチェック

The (null) file doesn't exist 
Output from else if loop 

int main(int argc, char *argv[]){ 
    for(int i = 1, i <=argc, i++){ 
     FILE *fileIn = fopen(argv[i],"r"); 
     if(fileIn == NULL){ 
       fprintf(stderr,"The file %s doesn't exist.",fileIn); 
     } 
     else if (fileIn != NULL){ 
      do a bunch of stuff, including printing out values from a struct 
     } 

私が午前問題は、私は私のプログラムを実行すると、私は出力としてこれを取得することです同時に。それは正常にファイルを読んで、それを行う必要がありますが、毎回エラーを実行します。 argv [i何かにポインタを割り当てる方法はありますか?これはどうですか?

答えて

5

コードのループ回数が多すぎます。 <= argcは、実際に存在するよりもさらに1つの議論を評価しています。それは次のようになります。また

for(int i = 1, i < argc, i++){ 

、次のようにする必要があり、存在しないファイルのためのprintf(それは名前を必要とします):

fprintf(stderr,"The file %s doesn't exist.",argv[i]); 
4

変更不平等で

for(int i = 1, i <=argc, i++){ 

for(int i = 1, i < argc, i++){ 

argcはその後

のargv、2 [0]プログラム名に
ARGVを= [1]また、第一引数

を=、あなたがif (fileIn == NULL)をチェックしていることから、再度チェックする必要はありません。ちょうどelseを使用してください。

+0

ありがとう、私はそれを試して、それが動作するかどうかを確認します。また、私はそれをテストするためにそこに条件付きelseを入れました。私はもともとそれを他のものとしていましたが、なぜそれが両方にダンプしているのかを見たいと思っていました。 –

関連する問題