2011-12-22 21 views
0

Cでファイルからどのように入力を取得するのですか?Cでのファイル処理の理解

例:特定のファイルへのファイルポインタを割り当てて、特定の操作を実行したいとします。ファイルポインタを割り当てるための構文は何ですか? ファイルはC:\ Acads \ bin \ File.txtにあると仮定します。私のコードで 私はそれは私にエラーを与えてしまい、この

FILE *fp1; 
fp1=("C:\Acads\bin\File.txt","r+"); 

を試してみてください。

更新日: これは私の主な疑問です。

私のファイルがどのようにしてパスにあるのかコンパイラに正確に伝えますか? 私は皆さんが私に言ったことは何もしなかったが、役に立たなかった。

+0

ファイル名は 'printf("ファイルは%s \ n "、" C:\ Acads \ bin \ File.txt "); – pmg

+0

という名前で表示されます。あなたの質問のタイトルのためのグーグルは、有効な結果のトンを与える。 –

答えて

2

私はあなたがタイプミスに走ったと思う:それは言う必要があります。

fp1=fopen(filename,"r+"); 

はまた、あなたは別のバックスラッシュで各バックスラッシュ文字\をエスケープする必要があります。

fp1=fopen("C:\\Acads\\bin\\File.txt","r+"); 

\が始まるためですエスケープシーケンス。例:\nは改行を意味します。 \\は、単純なバックスラッシュに展開されています。ここで

+0

さて、私はforogt '\'特別なcharcaterだった。しかし、あなたが私に言ったことをすることを促す、それはまだ働いていない... 私の次の急なc = getc(fp1)です。 printf( "%c"、c); このコードを実行しようとすると、エラーが発生します –

+0

自分でタイプミスをしました。「開く」ではなく「開く」でなければなりません。また、正確なコンパイラ/リンカエラーを出して、問題を識別してください。 – Constantinius

+0

FILE * fp1; \t fp1 = fopen( "C:\\ Academics \\ gcc \ bin \\ pe.txt"、 "r +"); \t printf( "開いているファイル\ n"); \t c = getc(fp1); \t printf( "%c"、c); コンパイラは私にエラーを与えませんが、私はプログラムを実行するときに、希望の出力を印刷しません。 –

0

man fopenを見てみましょうfopen

FILE *fp; 
fp = fopen(path, "r+"); 

を使用しての簡単な例です。

+0

を追加します。彼はWindows上にいるので、彼は人が何であるか分かりません。 – jforberg

+0

まあ、それはまたgoogleにあります –

+0

* http://www.google.at/?q = fopen *それは... – Constantinius

0

読み込む前にファイルを開く必要があります。 ファイルを開いてその結果の行を読み取る方法の完全な例を次に示します。

http://www.phanderson.com/files/file_read.html

+0

はい彼らは、ファイルが格納されている場所については言及していません。ファイルがどこにあるのかをプログラムがどのように知っているのか? それは何も私は理解していない –

0

ファイルポインタは、それがどのように大きな、それが位置しているように、ファイルに関する特定の情報を含む構造体へのポインタで、ご使用のオペレーティング・システムとlibcの実装によって他のもの。

ここで重要な点は、構造体に実際に含まれているものについて心配する必要がないことです。ライブラリ関数へのポインタを持つことができ、ライブラリ関数はそれをどうするかを知っていることを知っているだけです。これは、移植性の素晴らしい機能を提供します。つまり、ファイルを扱う方法がまったく異なるシステムでも、コードが変更されずに動作することができます。

1

Thisは、あなたが何かが間違っていたかどうかを確認するために、ファイル&使用perrorを開くためにfopenを使用することができますC.でのファイル処理の概要を説明しなければなりません。これらの行の何か:

FILE *fp; 
fp= fopen("C:\\Acads\\bin\\File.txt","r+"); /* You have to escape \ in C as it is a special character*/ 
if (fp == NULL) 
{ 
    perror("fopen"); 
    /*Handle error*/ 
} 
/* File operations */ 
fclose(fp); 

希望します。

+0

でした。どのようにしてこの問題を解決するのですか? –

+0

'perror'からエラーメッセージが出ましたか? 'fp'はいいですか? 'getc'を使っているなら' int'と 'char'を返さないことを忘れないでください。 –