2016-04-27 15 views
-1

なんらかの理由で、私のfprintf文が何もしません。私はprintfステートメントをその周りに置いて、それがそれにも到達するかどうかを確認しますが、何も起こらない理由はまだ分かりません。私は複数のものを試してみたが、それを把握することはできませんfprintfがファイルに書き込まない

#include <stdio.h> 
int main(int argc, char *argv[]) 
{ 
    char c[8]; 
    FILE *fp; 
    FILE *fp2; 
    int i=0; 
    int count,j,temp=0; 

    fp = fopen(argv[0],"r"); 
    fp2 = fopen(argv[1], "w"); 

    for(i=0; i<50;i++) 
    { 
     count = fread(c,1,8,fp); 
     if(((4<i)&&(i<10))||((14<i)&&(i<20))||((24<i)&&(i<30))||((34<i)&&(i<40))||(44<i)){ 
     continue; 
    } 
    else{ 
     for(j = 0; j<count; j++){ 
      c[j]=c[j]-'0'; 
      c[j]=c[j] << (count - (j+1)); 
      temp = temp | c[j]; 
     } 
     fprintf(fp2, "%d\n", temp); 
    } 
    } 

    fclose(fp); 
    fclose(fp2); 
    return 0; 
} 

: はここに私のコードです!

ありがとうございます。

+0

'fopen(argv [0]、" r ");'、ファイルモードを "" r "'から "" rb "'に変更します。 – BLUEPIXY

+1

'fopen'からの戻り値を確認してください。 –

+1

おそらく、デバッガを使用してステップインすることも役に立ちます。 –

答えて

2

fp = fopen(argv[0],"r"); 
fp2 = fopen(argv[1], "w"); 

あなたはこれをしたいです。あなたは二つの引数を渡したい場合は、

./myprog infile outfile 

のように名前infileはないargv[0]で、argv[1]になります。同じことがoutfileのために行く、それはargv[2]になり、次のよう

完全性については
fp = fopen(argv[1],"r"); 
fp2 = fopen(argv[2], "w"); 

は、標準がargv[0]の内容を指定します。

argcの値がゼロより大きい場合は、文字列が指摘しました〜によってはプログラム名を表します。プログラム名がホスト環境から利用できない場合は、argv[0][0]はヌル文字になります。

0

あなたは間違った議論をしています。

argv[0]は、常に実行されているプログラムの名前です。プログラムに渡されたコマンドラインオプションは、argv[1]で始まります。

実際に実行していることは、実行可能ファイルを読み込んで入力ファイルに書き込むことです。

ので、代わりにこの:問題はargvの使用である

// check for the proper number of arguments first 
if (argc < 3) { 
    printf("usage: program file1 file2\n"); 
    exit(1); 
} 
fp = fopen(argv[1],"r"); 
fp2 = fopen(argv[2], "w"); 
関連する問題