検索
ホームページバックエンド開発C#.Net チュートリアルC言語でのファイルの読み書き操作とは何ですか?

C 言語ファイルの読み取りおよび書き込み操作には、次のものが含まれます: 1. ファイル内の文字の読み取りおよび書き込みを行う関数、コードは [int fgetc(FILE *stream)] です; 2. 文字列の読み取りおよび書き込みを行う関数ファイル内のコードは [ int fputs(char *string,FILE *stream)] です。

C言語でのファイルの読み書き操作とは何ですか?

C 言語ファイルの読み取りおよび書き込み操作には、次のものが含まれます:

1. ファイルを開く関数 fopen()

ファイルオープン操作とは、ユーザーが指定したファイルをメモリ上のFILE構造体領域に確保し、その構造体のポインタをユーザープログラムに返すことを意味します。ユーザ プログラムは、この FILE ポインタを使用して、指定されたファイル アクセス操作を実装できます。 open 関数を使用する場合、ファイル名とファイル操作モード (読み取り、書き込み、読み取り/書き込み) を指定する必要があります。

ファイル名が存在しない場合は、ファイルを作成することを意味します (ファイルの書き込みのみ)。ファイルの読み取り時にエラーが発生するため)、ファイル ポインタがファイルの先頭を指します。同名のファイルが存在する場合は削除し、同名のファイルが存在しない場合はファイルを作成し、ファイルポインタをファイルの先頭に合わせます。

fopen(char *filename,char *type);

#*filename は、開かれるファイルのファイル名ポインタです。これは通常、二重引用符で囲まれたファイル名、または二重バックスラッシュで区切られたパス名として表されます。 #**type パラメータは、ファイルを開くための操作方法を示します。利用可能な操作方法は次のとおりです:

    意味 "r" は読み取り専用で開きます;
  • "w" はファイル ポインタを開きます先頭を指します。 、書き込みのみ;
  • "a" は開き、ファイルの末尾を指し、既存のファイルに追加します。
  • "rb" はバイナリ ファイルを読み取り専用で開きます;
  • "wb" はバイナリ ファイルを書き込み専用で開きます;
  • "ab" はバイナリ ファイルを開き、 を追加します ;
  • "r " 既存のファイルを読み取り/書き込みモードで開きます;
  • "w "既存のファイルを読み取り/書き込みモードで作成します 新しいテキスト ファイル;
  • "a " 読み取り/書き込みモードで追加するファイルを開きます;
  • "rb " 読み取り/書き込みモードで開きます バイナリ ファイルを書き込みモードで開きます;
  • "wb " 読み取り/書き込みモードで新しいバイナリ ファイルを作成します;
  • "ab " 追加するために読み取り/書き込みモードでバイナリ ファイルを開きます;
  • fopen() を使用してファイルを正常に開くと、この関数は戻り値を返しますFILE ポインタ。ファイルを開くことができなかった場合は、NULL ポインタが返されます。

2. ファイル関数 fclose() を閉じる

ファイル操作が完了したら、fclose() 関数を使用してファイルを閉じる必要があります。開いているファイルに書き込む必要があります。書き込み時に、ファイル バッファー内のスペースが書き込まれた内容で埋められていない場合、その内容は開いているファイルに書き込まれず、失われます。開いているファイルを閉じる場合にのみ、ファイル バッファに残っている内容をファイルに書き込むことができ、ファイルが完成します。

また、ファイルを閉じると、そのファイルに対応するFILE構造が解放され、この時点ではファイルへのアクセス操作が行われないため、閉じたファイルは保護されます。ファイルを閉じるということは、ファイルのバッファを解放することも意味します。

int fclose(FILE *stream);

これは、この関数が FILE ポインターに対応するファイルを閉じて、整数値を返すことを意味します。ファイルが正常に閉じられた場合は 0 値が返され、それ以外の場合は 0 以外の値が返されます。

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
    FILE *fp;   //  头文件#include <stdio.h>
    if((fp=fopen("123.txt","w"))==NULL)
    {
        printf("file cannot open \n");
        //exit(0);  头文件#include <stdlib.h>
        //exit结束程序,一般0为正常推出,其它数字为异常,其对应的错误可以自己指定。
    }
    else
        printf("file opened for writing \n");
    if(fclose(fp)!=0)
        printf("file cannot be closed \n");
    else
        printf("file is now closed \n");
    return 0;
}

3. ファイルの読み取りと書き込み

(1). ファイル内の文字の読み取りと書き込みを行う関数 (一度にファイル内の 1 文字のみを読み取りおよび書き込みます) time):

int fgetc(FILE *stream);
int getchar(void);
int fputc(int ch,FILE *stream);
int putchar(int ch);
int getc(FILE *stream);
int putc(int ch,FILE *stream);

fgetc()

関数は、ストリーム ポインタが指すファイルから文字を読み取ります (例: ch=fgetc(fp); から文字を読み取ります)ストリーム ポインタ fp が指すファイル 文字が読み取られ、ch に割り当てられます。 fgetc() 関数が実行されるとき、ファイル ポインタがファイルの終端を指している場合、ファイルの終端フラグ EOF が検出されます (その対応する値は -1)、関数は ch. に -1 を返します。この関数の戻り値が -1 であるかどうかをチェックしてファイルの終わりに達したかどうかを判断するプログラムでよく使用されます。続ける。 <pre class='brush:php;toolbar:false;'>#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; using namespace std; int main() { FILE *fp; char ch; if((fp=fopen(&quot;123.txt&quot;,&quot;r&quot;))==NULL) printf(&quot;file cannot open \n&quot;); else printf(&quot;file opened for writing \n&quot;); while((ch=fgetc(fp))!=EOF) fputc(ch,stdout); //这里是输出到屏幕 if(fclose(fp)!=0) printf(&quot;file cannot be closed \n&quot;); else printf(&quot;file is now closed \n&quot;); return 0; }</pre>このプログラムは、123.txt ファイルを読み取り専用モードで開きます。while ループを実行すると、ループするたびにファイル ポインタが 1 文字位置に戻ります。 fgetc() 関数を使用してファイルポインタで指定された文字を ch 変数に読み込み、fputc() 関数を使用して画面に表示します。ファイルの終わりマーク EOF が読み込まれると、ファイルは閉まっている。上記プログラムでは、文字変数chの値をストリームポインタで指定されたファイルに書き込むfputc()関数を使用していますが、ストリームポインタは標準出力(表示)のFILEポインタstdoutを使用しているため、読み込んだ文字が表示されます。モニター上で。別の例: fputc(ch,fp); この関数は構造体を実行し、ch で表される文字をストリーム ポインタ fp が指すファイルに送信します。

TC では、putc() は fputc() と同等であり、getc() は fgetc() と同等です。 putchar(c) は fputc(c,stdout) と同等、getchar() は fgetc(stdin) と同等です。ここでの char ch の使用は実際には非科学的であることに注意してください。最終的に終了マークを判定するときに ch!=EOF が調べられ、EOF の値は -1 であり、明らかに char とは比較にならないからです。したがって、用途によっては

int ch

として定義します。 <pre class='brush:php;toolbar:false;'>#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; using namespace std; int main() { FILE *fp; if((fp=fopen(&quot;123.txt&quot;,&quot;a&quot;))==NULL) printf(&quot;file cannot open \n&quot;); else printf(&quot;file opened for writing \n&quot;); char ch=&amp;#39;e&amp;#39;; fputc(ch,fp); //输入到文件中 if(fclose(fp)!=0) printf(&quot;file cannot be closed \n&quot;); else printf(&quot;file is now closed \n&quot;); return 0; }</pre>(2). ファイル内の文字列を読み書きするための関数

char *fgets(char *string,int n,FILE *stream);
char *gets(char *s);
int fprintf(FILE *stream,char *format,variable-list);
int fputs(char *string,FILE *stream);
char *puts(char *s);
int fscanf(FILE *stream,char *format,variable-list);

其中fgets()函数将把由流指针指定的文件中n-1个字符,读到由指针string指向的字符数组中去,例如: fgets(buffer,9,fp); 将把fp指向的文件中的8个字符读到buffer内存区,buffer可以是定义的字符数组,也可以是动态分配的内存区。 

注意,fgets()函数读到'/n'就停止,而不管是否达到数目要求。同时在读取字符串的最后加上'/0'。 fgets()函数执行完以后,返回一个指向该串的指针。如果读到文件尾或出错,则均返回一个空指针NULL,所以长用feof()函数来测定是否到了文件尾或者是ferror()函数来测试是否出错,

检测是否已到文件尾,是返回真,否则返回0,其原型是int feof(FILE *stream);

例:if(feof(fp))printf("已到文件尾");

原型是int ferror(FILE *stream);返回流最近的错误代码,可用clearerr()来清除它,clearerr()的原型是void clearerr(FILE *stream);

例:printf("%d",ferror(fp));

例如下面的程序用fgets()函数读test.txt文件中的第一行并显示出来:

#include "stdio.h" 
int main() {
    FILE *fp; 
    char str[128]; 
    if((fp=fopen("123.txt","r"))==NULL) {
        printf("cannot open file/n"); exit(1);
    } 
    while(!feof(fp)) {
        if(fgets(str,128,fp)!=NULL)
        printf("%s",str);
    }
    fclose(fp);
}

相关学习推荐:C视频教程

以上がC言語でのファイルの読み書き操作とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
C#と.NET:2つの関係を理解し​​ますC#と.NET:2つの関係を理解し​​ますApr 17, 2025 am 12:07 AM

C#と.NETの関係は切り離せませんが、同じものではありません。 C#はプログラミング言語であり、.NETは開発プ​​ラットフォームです。 C#は、コードの書き込み、.NETの中間言語(IL)にコンパイルされ、.NET Runtime(CLR)によって実行されるために使用されます。

c#.netの継続的な関連性:現在の使用法を見るc#.netの継続的な関連性:現在の使用法を見るApr 16, 2025 am 12:07 AM

C#.NETは、複数のアプリケーション開発をサポートする強力なツールとライブラリを提供するため、依然として重要です。 1)C#は.NETフレームワークを組み合わせて、開発を効率的かつ便利にします。 2)C#のタイプの安全性とゴミ収集メカニズムは、その利点を高めます。 3).NETは、クロスプラットフォームの実行環境とリッチAPIを提供し、開発の柔軟性を向上させます。

Webからデスクトップまで:C#.NETの汎用性Webからデスクトップまで:C#.NETの汎用性Apr 15, 2025 am 12:07 AM

c#.netisversatileforbothwebanddesktopdevelopment.1)forweb、useasp.netfordynamicapplications.2)fordesktop、equindowsorwpfforrichinterfaces.3)usexamarinforcross-platformdeveliment、enabling deshacrosswindows、

c#.net and the Future:新しいテクノロジーへの適応c#.net and the Future:新しいテクノロジーへの適応Apr 14, 2025 am 12:06 AM

C#と.NETは、継続的な更新と最適化を通じて、新しいテクノロジーのニーズに適応します。 1)C#9.0および.NET5は、レコードタイプとパフォーマンスの最適化を導入します。 2).Netcoreは、クラウドネイティブおよびコンテナ化されたサポートを強化します。 3)ASP.Netcoreは、最新のWebテクノロジーと統合されています。 4)ML.NETは、機械学習と人工知能をサポートしています。 5)非同期プログラミングとベストプラクティスはパフォーマンスを改善します。

c#.netはあなたにぴったりですか?その適用性の評価c#.netはあなたにぴったりですか?その適用性の評価Apr 13, 2025 am 12:03 AM

c#.netissuitableforenterprise-levelApplicationsとsystemduetoitsSystemdutyping、richlibraries、androbustperformance.

.NET内のC#コード:プログラミングプロセスの調査.NET内のC#コード:プログラミングプロセスの調査Apr 12, 2025 am 12:02 AM

.NETでのC#のプログラミングプロセスには、次の手順が含まれます。1)C#コードの作成、2)中間言語(IL)にコンパイルし、3).NETランタイム(CLR)によって実行される。 .NETのC#の利点は、デスクトップアプリケーションからWebサービスまでのさまざまな開発シナリオに適した、最新の構文、強力なタイプシステム、および.NETフレームワークとの緊密な統合です。

C#.NET:コアの概念とプログラミングの基礎を探るC#.NET:コアの概念とプログラミングの基礎を探るApr 10, 2025 am 09:32 AM

C#は、Microsoftによって開発された最新のオブジェクト指向プログラミング言語であり、.NETフレームワークの一部として開発されています。 1.C#は、カプセル化、継承、多型を含むオブジェクト指向プログラミング(OOP)をサポートしています。 2。C#の非同期プログラミングは非同期を通じて実装され、適用応答性を向上させるためにキーワードを待ちます。 3. LINQを使用してデータ収集を簡潔に処理します。 4.一般的なエラーには、null参照の例外と、範囲外の例外インデックスが含まれます。デバッグスキルには、デバッガーと例外処理の使用が含まれます。 5.パフォーマンスの最適化には、StringBuilderの使用と、不必要な梱包とボクシングの回避が含まれます。

テストC#.NETアプリケーション:ユニット、統合、およびエンドツーエンドテストテストC#.NETアプリケーション:ユニット、統合、およびエンドツーエンドテストApr 09, 2025 am 12:04 AM

C#.NETアプリケーションのテスト戦略には、ユニットテスト、統合テスト、エンドツーエンドテストが含まれます。 1.単位テストにより、コードの最小ユニットがMSTEST、ヌニット、またはXUNITフレームワークを使用して独立して動作することを保証します。 2。統合テストでは、一般的に使用されるシミュレートされたデータと外部サービスを組み合わせた複数のユニットの機能を検証します。 3.エンドツーエンドのテストでは、ユーザーの完全な操作プロセスをシミュレートし、通常、セレンは自動テストに使用されます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境