2012-02-07 8 views
0

キーパッドからファイルにデータを読み込み、そのファイルの内容を画面に出力しようとしたときにファイル操作が新しくなりました。以下のコードで希望の結果が得られませんcでのファイル操作が必要な結果を生成しない

/* get data from the keyboared till the end of file and write it to the 
file named "input" agian read the data from this file on to the screen*/ 

#include <stdio.h> 

    int main() 
    { 
    FILE *fp; 
    char c; 
    printf("enter the data from the keyboared\n"); 

    fp=fopen("input.txt","w"); 

    while((c=getchar()!=EOF)) 
    { 
     putc(c,fp); 
    } 

    fclose(fp); 

    printf("reading the data from the file named input\n"); 

    fopen("input.txt","r"); 

    while((c=getc(fp))!=EOF) 
    { 
     printf("%c",c); 
    } 

    fclose(fp); 

    return 0; 

    } 

私はこのような出力を得ていますか?

また、このファイルがハードディスク上のどこに作成されているかを知る方法はありますか?

+0

問題/エラーは何ですか? – m0skit0

+1

予期せぬ/望ましくない結果について話しているのなら、自分自身で試してみるのは難しいことではありませんが、あなたが期待しているものと受け取ったものを投稿するのが通常は便利です。 – Bart

答えて

1

まず、これは優先順位のために間違っています。

while((c=getchar()!=EOF)) 
        ^

代わりの文字を保存するには、継続的に文字とEOFとの間の比較を格納します。したがって、あなたは連続して1の長い行を保存します。

while((c=getchar())!=EOF) 
       ^

第二getcgetcharリターンint

はこれを試してみてください。 So ch should be int, not charcharを使用すると、ループが一部のシステムで終了することはありません。

+0

thanx ...それは働いた... – haris

+0

私はそこに私はハードディスク上のどこにこのファイルが作成されているかを知ることができる方法を教えてくれますか? – haris

+0

@haris現在のディレクトリにあります。 – cnicutar

0

ライン:

fopen("input.txt","r"); 

は明らかに間違っています。あなたが欲しいと思う:

fp = fopen("input.txt","r"); 

代わりに。

+0

はい、私はライトです。しかし、それは同様にfpなしで働いた。私はどのように不思議に思っていますか? – haris

+2

@haris:偶然によって。 fopenへの2番目の呼び出しによって返されたポインタは、最初の呼び出しによって返されたものと同じでした。プログラムを展開したり、別のコンパイラで実行しようとすると、それは起こりそうもありません。 – harald

関連する問題