2016-04-12 23 views
-6

ファイルを読み込んで文字を出力するコードを記述しようとしています。 charが読み取れない場合は、?と表示されます。ファイルにエラーがある場合、コードは-1を返します。それ以外の場合は、読み込まれた文字の量を返します。どういうわけか、私はそれをコンパイルできないので、これは正しく動作していません。ファイルからの読み込み

これを動作させるためのスペースを確保するか、コードが間違っているかどうかを確認してください。

+2

どのように正しく動作しないのですか? – Henningsson

+7

「どういうわけかこれは正しく動作していません」は、有用なエラーの説明ではありません。入力、期待される出力、観測された出力。それは101のデバッグです。また、あなたのサンプルコードはプログラムにコンパイルする必要があります。つまり、 'int main()'と必要なものがすべて含まれていなければなりません。 – DevSolar

+4

まず、 'c'を初期化しません。開始する値は不定です。次に、ファイルを 'fclose()'でクローズしません。第3に、元の 'fopen()'が成功したことを決して確認しません。 –

答えて

0

ここでは、PrintFileを実装する方法の例を示します。

#include <stdio.h> 

int PrintFile(const char *filename); 

int PrintFile(const char *filename) 
{ 
    FILE *file = fopen(filename, "r"); 

    if (file == NULL) 
    { 
     return -1; 
    } 

    int c = 0; 
    int i = 0; 

    while ((c = fgetc(file)) != EOF) 
    { 
     if (isprint(c)) 
     { 
      fputc(c, stdout); 
      i++; 
     } 
     else 
     { 
      fputc('?', stdout); 
     } 
    } 

    if (ferror(file)) 
    { 
     return -2; 
    } 

    return i; 
} 
関連する問題