ホームページ よくある問題 C言語で扱えるファイルの種類は何ですか?

C言語で扱えるファイルの種類は何ですか?

Sep 19, 2022 pm 03:53 PM
C言語

C 言語が処理できるファイルの種類は、テキスト ファイルとバイナリ ファイルです。 C言語が処理できるファイルは、その格納形式によりテキストファイルとバイナリファイルに分けられます 1.テキストファイルにはASCIIコードが格納されており、ファイルの内容を直接入出力することができます 2.バイナリファイルには文字が直接格納されています、バイナリ ファイルは保存できず、ファイルの内容が直接画面に出力されます。

C言語で扱えるファイルの種類は何ですか?

#このチュートリアルの動作環境: Windows7 システム、C99 バージョン、Dell G3 コンピューター。

コンピュータでは、入力と出力はデータ ストリームの形式で行われます。アクセスモードに応じて、ファイルはシーケンシャルアクセスファイルとランダムアクセスファイルに分けられます。保存形式によりバイナリファイルとテキストファイルに分かれます。テキストファイルにはASCIIコードが格納されており、ファイルの内容を直接入出力できます。バイナリ ファイルには文字が直接格納されており、バイナリ ファイルの内容を直接画面に出力することはできません。したがって、

C言語が処理できるファイルは、その保存形式に応じてテキストファイルとバイナリファイルに分かれます。

テキスト ファイルとバイナリ ファイルの違い

テキスト ファイルは、通常、.txt ファイルなど、肉眼で見える文字を保存するために使用されます。 c ファイルや .dat ファイルなどをテキスト エディタで開くと、ファイルの内容を正常に理解できます。

バイナリ ファイルは、通常、ビデオ、写真、プログラムなどの判読できないコンテンツを保存するために使用されます。これらのファイルをテキスト エディタで開くと、まったく理解できない文字化けが大量に表示されます。

しかし、物理的に言えば、バイナリ ファイルとキャラクタ ファイルには違いはなく、どちらもバイナリ形式でディスクに保存されたデータです。

テキスト ファイルの内容を理解できるのは、テキスト ファイルが ASCII、UTF-8、GBK などの文字エンコーディングを使用しているためです。テキスト エディターはこれらのエンコーディング形式を認識し、エンコーディング値を変換できます。 to 文字に変換して表示します。

バイナリ ファイルは、mp4、gif、exe などの特殊なエンコード形式を使用します。テキスト エディタはこれらのエンコード形式を認識せず、文字エンコード形式に従ってランダムに解析することしかできないため、大量のファイルになります。乱雑な文字の. 、見たことさえない人もいます。

新規にmp4ファイルを作成し、文字列を書き込んでテキストエディタで開くと理解できると思いますので、興味のある方は試してみてください。

まとめると、ファイルの種類によってエンコード形式が異なるため、正しく解析するには対応するプログラム(ソフトウェア)を使用しないと文字化けしたり、使用できなくなったりします。

プログラマにとって、テキスト ファイルとバイナリ ファイルは、ファイルを開く方法 (テキスト モード/バイナリ)、このファイルの読み取りおよび書き込みに使用する関数 (読み取りおよび書き込み関数) を示すステートメントです。どのように判決がこのファイルの最後まで読まれるか。

具体的には:

1.ファイルを開くにはどうすればよいですか?

ANSI C は、標準入出力関数ライブラリを指定し、fopen() 関数を使用してファイルを開きます。 fopen() 関数の呼び出しメソッドは通常次のとおりです。

FILE *fp;
fp=fopen(文件名,使用文件方式);
ログイン後にコピー

ファイル メソッドの使用方法については、以下の表を参照してください。

##「r」 (読み取り専用) 入力ファイルのテキストを開きます"w" (書き込みのみ)入力ファイルのテキスト ファイルを開きます出力#"a" (追加)"rb" (読み取り専用) ##"wb" (書き込み専用) "ab" (追加)"r "(読み取りおよび書き込み)##読み取り/書き込み用テキスト ファイルの作成読み取り/書き込み用にテキスト ファイルを開きますバイナリを開きます読み書き用ファイル

同じファイルをディスクからメモリ (プログラムデータ領域またはキャッシュ領域) に読み込んだ場合、一般に 2 つの方法ではメモリの内容が異なり、これが 2 つのオープン方法の大きな違いです。

ここには背景があり、Windows では、ファイルを書き込むときに改行文字が復帰に変換されるという処理が実行されます。改行文字は、ファイルを読み込むと、改行文字が復帰に変換されます。ファイル内の連続した復帰と改行を改行に変換する逆の処理が実行されます。

したがって、ディスク ファイルを読み取る場合、テキスト モードで読み取るファイルの内容は、バイナリ ファイルよりも短くなる可能性があります。これは、テキスト モードで読み取るには、キャリッジ リターンとライン フィードの 2 文字を 1 文字に変換する必要があるためです。文字. 、これはファイルを切り詰めることと同じです。しかし、なぜそれが可能なのでしょうか?テキスト内に 2 つの連続するバイト 45 と 42 が存在しない可能性があるため (45 は CR キャリッジ リターンの ASCII コード、42 はライン フィード CL の ASCII コード)、「切り捨て」操作はないため、読み取り内容は同じ。

具体的には、ファイル (テキスト モードで書き込まれた) はテキスト モードで読み取るのが最適です。バイナリ ファイル (バイナリ モードで書き込まれた) は、バイナリ モードで読み取るのが最適です。そうしないと、間違っている可能性があります。以上のことを分析してみました。

2. ファイルの読み取りと書き込みにはどのような関数が使用されますか?

データがディスクにどのように書き込まれるかは、ファイルを開く方法ではなく、書き込み関数によって決まります。ディスクからデータを読み取る方法は、ファイルを開く方法ではなく、読み取り関数によって決まります。

上記のデータの書き方とは、変数の種類を格納する方法を指します。たとえば、int 12 の場合、12 のバイナリ コード (4 バイト) を直接格納することも、文字 1 と文字 2 を格納することもできます。

データの読み取り方法は、int 変数を読み取りたい場合を意味します。 sizeof (int) バイトを直接読み取ることも、読み取られた文字が数字でなくなるまで 1 文字ずつ読み取ることもできます。

C には、上記の 2 つの読み取りおよび書き込み方法をサポートする 2 つのファイル読み取りおよび書き込み関数セットがあります。

  • 1.fread(buffer,size,count 、fp)、fwrite(バッファー、サイズ、カウント、fp)。データブロックの読み取りと書き込みに使用されます。第1の保存方法に相当する。型のバイト長に応じて読み書きするバイト数を直接指定します。

  • 2fprintf 関数と fscanf 関数 2 番目の読み書き方法に相当します。つまり、文字形式での読み取りと書き込みです。 (fprintf 関数および fscanf 関数は、printf 関数および scanf 関数と同様の機能を持ちます。これらはすべて、フォーマットされた読み取りおよび書き込み関数です。fprintf 関数および fscanf 関数の読み取りおよび書き込みオブジェクトはディスク ファイルですが、読み取りおよび書き込みオブジェクトはディスク ファイルです。 printf 関数と scanf 関数のうちの 2 つは端末です。)

それらの一般的な呼び出し形式は次​​のとおりです:

fprintf (ファイル ポインター、フォーマット文字列、出力リスト);

fscanf (ファイル ポインタ、フォーマット文字列、入力リスト);

3 ファイルの終わりを判断するにはどうすればよいですか?

C 言語、より正確には C 標準関数ライブラリには、特殊文字 EOF (stdio.h #define EOF (-1) の定義) があり、これは :end of を意味します。ファイル。 while ループでは EOF がファイルの終端マークとして使用されます。EOF がファイルの終端マークとして使用されるファイルはテキスト ファイルである必要があります。テキスト ファイルでは、データは文字 ASCII コード値の形式で保存されます。 ASCII コード値の範囲は 0 ~ 255 で、-1 は不可能であることがわかっているため、EOF をファイルの終わりマークとして使用できます。

ただし、C言語ではバイナリ形式でファイルにデータを格納すると-1という値が表示されるため、このときバイナリファイルの終了マークとしてEOFを使用することはできません。この問題を解決するために、ANSI C ではファイルが終了したかどうかを判断する feof 関数が提供されています。ファイルの終わりに達した場合、関数 feof (fp) の値は 1 になり、それ以外の場合は 0 になります。

feof 関数を使用して、バイナリ ファイルが終了するかテキスト ファイルが終了するかを判断できます。 。ただし、feof を使用してテキスト ファイルの終わりを判断する場合、コードが正しく記述されていないと、テキスト内のファイルの終わり文字 EOF も読み取られる可能性があることに注意してください。http://baike を参照してください。詳細については、.baidu.com/view/656648. htm

4. ファイルがテキスト ファイルであるかバイナリ ファイルであるかを知ることで、どの読み取りおよび書き込み関数を選択する必要があるかをさらに「思い出させる」ことができます。 。

2 で述べたように、データの保存方法はファイルを開く方法ではなく、読み取り関数と書き込み関数によって決まります。

たとえば、ファイルをバイナリ ファイルとして開くと (実際には改行文字の変換を指定するだけです)、これはより多くのアイデア (仮想) を表します。このファイル内のデータは次のようになります。これは、int 型が 4 バイト、char 型が 1 バイトを占有します。このモードでは、fread(buffer,size0f(int),1,fp) を使用して int を int 変数に読み取ります。

覚えておきます

ファイルを操作する前に、まずそのファイルがテキスト ファイルであるかバイナリ ファイルであるかを知る必要があります。ファイルはテキスト モードで開かれ、バイナリ ファイルはバイナリ モードで開かれます。

バイナリ ファイルを操作したい場合は、バイナリ モードで開きます (理論的にはファイル モードでも開くことができますが、バイナリデータが書き込まれます。45 が入っている場合、45,42 に変換されて保存されます。1 を参照してください。これは非常に発生する可能性があります)。読み取りと書き込みを同時に行う場合は、fread と fwrite の 2 つの関数を使用します。

テキスト ファイルを操作したい場合は、テキスト モードで開きます (理論的にはバイナリ モードでも開くことができますが、安全ではありません)。読み取りと書き込みを同時に行う場合は、これらの関数 fprintf、fscanf、fgetc、fputc、putw、getw、fgetc、fputs

関連の推奨事項: 「C ビデオ チュートリアル

ファイルの使用メソッド

意味

追加用のテキスト ファイルを開きます

入力用にバイナリ ファイルを開きます

出力用のバイナリ ファイルを開く

追加用のバイナリ ファイルを開きます

読み取り/書き込み用にテキスト ファイルを開きます

#"w "(読み取りと書き込み)

##"a " (読み取りおよび書き込み)

"rb "(読み取りおよび書き込み)

"wb "(読み書き)

読み取り/書き込み用のバイナリ ファイルを作成します

##"ab "(読み取りおよび書き込み)

読み取り/書き込み用にバイナリ ファイルを開きます

以上がC言語で扱えるファイルの種類は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語でのtypedef構造体の使い方 C言語でのtypedef構造体の使い方 May 09, 2024 am 10:15 AM

typedef struct は、構造体の使用を簡素化するために構造体型のエイリアスを作成するために C 言語で使用されます。構造体の別名を指定することで、新しいデータ型を既存の構造体に別名付けします。利点としては、可読性の向上、コードの再利用、型チェックなどが挙げられます。注: エイリアスを使用する前に構造体を定義する必要があります。エイリアスはプログラム内で一意であり、宣言されているスコープ内でのみ有効である必要があります。

C言語のstrcpyとstrcatの違い C言語のstrcpyとstrcatの違い May 08, 2024 pm 01:03 PM

strcpy は文字列を別の文字列にコピーし、strcat は文字列を別の文字列に追加します。主な違いとしては、目的の違い、dst パラメータの処理の違い、セキュリティ上の考慮事項の違いなどが挙げられます。

C言語で実数は何を意味しますか C言語で実数は何を意味しますか May 09, 2024 pm 12:06 PM

real は、C 言語で倍精度浮動小数点数を表すために使用されるデータ型で、8 バイトを占有し、小数点以下 15 桁程度の精度を持ち、範囲は [-1.7976931348623157e+308, 1.7976931348623157e+308] です。

_C言語での複雑な使い方 _C言語での複雑な使い方 May 08, 2024 pm 01:27 PM

複素数型は、C 言語で実数部と虚数部を含む複素数を表すために使用されます。その初期化形式は complex_number = 3.14 + 2.71i で、実数部は creal(complex_number) を通じてアクセスでき、虚数部は cimag(complex_number) を通じてアクセスできます。この型は、加算、減算、乗算、除算、剰余などの一般的な数学演算をサポートします。さらに、cpow、csqrt、cexp、csin など、複素数を処理するための一連の関数が提供されています。

C言語のscanfでエラーが発生した場合の対処方法 C言語のscanfでエラーが発生した場合の対処方法 May 09, 2024 am 11:39 AM

C 言語では、scanf 関数のエラーを処理する方法は次のとおりです。 1. フォーマット文字列を確認する、 3. 戻り値を確認する、 5. エラー処理関数を使用する、 6. を使用する。カスタムエラーに対処します。エラーを防ぐには、正しいデータ型を使用し、入力を慎重に検証し、戻り値を確認し、プログラム内の潜在的なエラーを処理します。

C言語でべき乗関数を実装する方法 C言語でべき乗関数を実装する方法 May 09, 2024 pm 11:33 PM

C 言語では、べき乗演算を実装する方法が 2 つあります。 pow() 関数を使用して、最初のパラメーターの 2 番目のパラメーターのべき乗を計算します。カスタム累乗関数を定義します。これは再帰的または反復的に実装できます。再帰的メソッドは、累乗が 0 になるまで 2 倍にし続けます。反復法では、ループを使用して基数を 1 つずつ乗算します。

C言語でのrestrictの使い方 C言語でのrestrictの使い方 May 08, 2024 pm 01:30 PM

strict キーワードは、変数にはポインターによってのみアクセスできることをコンパイラーに通知するために使用され、未定義の動作を防止し、コードを最適化し、読みやすさを向上させます。複数のポインターが同じ変数を指している場合の未定義の動作を防止します。コードを最適化するために、コンパイラは、restrict キーワードを使用して変数アクセスを最適化します。変数にはポインターによってのみアクセスできることを示すことで、コードの可読性が向上します。

_C言語でブールとはどういう意味ですか? _C言語でブールとはどういう意味ですか? May 08, 2024 pm 01:33 PM

_Bool は C 言語のブール型を表し、true または false の 2 つの値のみを含む単純なデータ型で、通常は 1 バイトのメモリを占有し、true または false のみを格納します。 false。偽の値。