「C言語/ファイル入出力」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎読み込もうとしたファイルが無い場合に、同名のファイルを作成したい場合: 「読み込みモードの対象ファイルが無い場合に、作成したい」と前提が意味不明。また最初の fopenで開いたストリームを始末していない。レースコンディションがある。など問題が多い。 ⇒ コメント化
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎ファイルのオープン: {{コラム|"stdafx.h"って何?}}
タグ: 2017年版ソースエディター
10 行
int main()
{
FILE *ファイルポインタ;fp //= fopen("開きたいファイルポインタの作成名.拡張子", "モード");
 
ファイルポインタ = fopen("開きたいファイル名.拡張子", "モード");
// ここにファイルの操作内容(作成、読み書きなど)を記述。
 
fclose(ファイルポインタfp);
return 0;
}
</syntaxhighlight>
ファイルに読み書きなどの操作するためには、まず、そのファイルをオープンする(開く)する必要がある。
 
オープンしていない状態(クローズ)の状態のファイルは、操作できない。
 
 
fopenがファイル操作のためにオープンする関数であるが、これだけではファイル操作をできず、あらかじめファイルFILE型へのポインタを宣言する必要がある。
 
 
ファイルFILE型へのポインタの宣言は、
 
<code> FILE *ファイルポインタfp; </code>
 
の書式で行う。なお「FILE」はファイルと読む
 
さて、例えば、
<code> FILE *fp1; </code>
なら、fp1という名のファイルFILE型へのポインタが作成される。
 
 
 
56 ⟶ 53行目:
int main()
{
FILE *ファイルポインタ;fp //= fopen("開きたいファイルポインタの作成名.拡張子", "モード");
 
ファイルポインタ = fopen("開きたいファイル名.拡張子", "モード");
// ここにファイルの操作内容(作成、読み書きなど)を記述。
 
fclose(ファイルポインタfp);
return 0;
68 ⟶ 63行目:
</syntaxhighlight>
 
<code>#pragma warning(disable:4996)</code> が、fopenなどの関数の使用許可令である。これは、stdafx など一連のWindows用ヘッダのインクルードの後で宣言に指令する必要がある。
 
 
82 ⟶ 77行目:
int main()
{
FILE *fp1 = fopen("test1.txt", "w");
if (fp1 == NULL) {
 
printfperror("ファイルを開けませんでした。\n");
fp1 = fopen("test1.txt", "w");
if ( (fp1 = fopen("test1.txt", "w") ) == NULL) {
printf("ファイルを開けませんでした。\n");
system("pause");// 「続行するには何かキーを押してください . . .」の待機命令
return 1;
133 ⟶ 126行目:
さて、このtest1.txtをマウスでクリックして、中身を見ても、まだ何も文章は書き込まれていない事を確認しよう。
 
{{コラム|"stdafx.h"って何?|プログラムの冒頭で<syntaxhighlight lang="C" inline>#include "stdafx.h"</syntaxhighlight> と <code>"stdafx.h"</code> なるヘッダーファイルをインクルードしています。
これはC言語標準にはなく、Windows(Visual Studio)固有のプリコンパイルヘッダーです。stdafx は Standard Application Frameworks の略で、MFC(Microsoft Foundation Class)の使用を想定しているものでした。
VS2019からが、<code>"stdafx.h"</code> から <code>"pch.h"</code>(Pre compile header)と機能と一致した名前になりました。
 
いずれにしても、Windows/Visual Studio でプリコンパイルヘッダーを使う状況でしか意味がありませんし、この本で扱うサイズのプリグラムではプリコンパイルヘッダーを使うメリットはありません。}}
 
== 読み書き ==