ホームページ よくある問題 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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の 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言語データ構造:ツリーとグラフのデータ表現と操作 C言語データ構造:ツリーとグラフのデータ表現と操作 Apr 04, 2025 am 11:18 AM

C言語データ構造:ツリーとグラフのデータ表現は、ノードからなる階層データ構造です。各ノードには、データ要素と子ノードへのポインターが含まれています。バイナリツリーは特別なタイプの木です。各ノードには、最大2つの子ノードがあります。データは、structreenode {intdata; structreenode*left; structreenode*右;}を表します。操作は、ツリートラバーサルツリー(前向き、順序、および後期)を作成します。検索ツリー挿入ノード削除ノードグラフは、要素が頂点であるデータ構造のコレクションであり、近隣を表す右または未照明のデータを持つエッジを介して接続できます。

C言語ファイルの操作問題の背後にある真実 C言語ファイルの操作問題の背後にある真実 Apr 04, 2025 am 11:24 AM

ファイルの操作の問題に関する真実:ファイルの開きが失敗しました:不十分な権限、間違ったパス、およびファイルが占有されます。データの書き込みが失敗しました:バッファーがいっぱいで、ファイルは書き込みできず、ディスクスペースが不十分です。その他のFAQ:遅いファイルトラバーサル、誤ったテキストファイルエンコード、およびバイナリファイルの読み取りエラー。

CSウィーク3 CSウィーク3 Apr 04, 2025 am 06:06 AM

アルゴリズムは、問題を解決するための一連の指示であり、その実行速度とメモリの使用量はさまざまです。プログラミングでは、多くのアルゴリズムがデータ検索とソートに基づいています。この記事では、いくつかのデータ取得およびソートアルゴリズムを紹介します。線形検索では、配列[20,500,10,5,100,1,50]があることを前提としており、数50を見つける必要があります。線形検索アルゴリズムは、ターゲット値が見つかるまで、または完全な配列が見られるまで配列の各要素を1つずつチェックします。アルゴリズムのフローチャートは次のとおりです。線形検索の擬似コードは次のとおりです。各要素を確認します:ターゲット値が見つかった場合:return true return false c言語実装:#include#includeintmain(void){i

Debian Readdirが他のツールと統合する方法 Debian Readdirが他のツールと統合する方法 Apr 13, 2025 am 09:42 AM

DebianシステムのReadDir関数は、ディレクトリコンテンツの読み取りに使用されるシステムコールであり、Cプログラミングでよく使用されます。この記事では、ReadDirを他のツールと統合して機能を強化する方法について説明します。方法1:C言語プログラムを最初にパイプラインと組み合わせて、cプログラムを作成してreaddir関数を呼び出して結果をinclude#include#include inctargc、char*argv []){dir*dir; structdireant*entry; if(argc!= 2){(argc!= 2){

C言語マルチスレッドプログラミング:初心者のガイドとトラブルシューティング C言語マルチスレッドプログラミング:初心者のガイドとトラブルシューティング Apr 04, 2025 am 10:15 AM

C言語マルチスレッドプログラミングガイド:スレッドの作成:pthread_create()関数を使用して、スレッドID、プロパティ、およびスレッド関数を指定します。スレッドの同期:ミューテックス、セマフォ、および条件付き変数を介したデータ競争を防ぎます。実用的なケース:マルチスレッドを使用してフィボナッチ数を計算し、複数のスレッドにタスクを割り当て、結果を同期させます。トラブルシューティング:プログラムのクラッシュ、スレッドの停止応答、パフォーマンスボトルネックなどの問題を解決します。

C言語でカウントダウンを出力する方法 C言語でカウントダウンを出力する方法 Apr 04, 2025 am 08:54 AM

Cのカウントダウンを出力する方法は?回答:ループステートメントを使用します。手順:1。変数nを定義し、カウントダウン数を出力に保存します。 2。whileループを使用して、nが1未満になるまでnを連続的に印刷します。 3。ループ本体で、nの値を印刷します。 4。ループの端で、n x 1を減算して、次の小さな相互に出力します。

C言語関数の定義のコール宣言の形式を取得する方法 C言語関数の定義のコール宣言の形式を取得する方法 Apr 04, 2025 am 06:03 AM

C言語関数には、定義、呼び出し、宣言が含まれます。関数定義関数名、パラメーター、リターンタイプを指定します。関数本体は関数を実装します。関数呼び出しは機能を実行し、パラメーターを提供します。関数宣言は、コンパイラに関数タイプを通知します。値パスは、パラメーターパスに使用され、リターンタイプに注意を払い、一貫したコードスタイルを維持し、関数のエラーを処理します。この知識を習得することは、エレガントで堅牢なCコードを書くのに役立ちます。

Cの整数:小さな歴史 Cの整数:小さな歴史 Apr 04, 2025 am 06:09 AM

整数はプログラミングで最も基本的なデータ型であり、プログラミングの礎石と見なすことができます。プログラマーの仕事は、これらの数字の意味を与えることです。ソフトウェアがどれほど複雑であっても、プロセッサは整数のみを理解しているため、最終的には整数操作になります。負の数を表すために、2つの補完を紹介しました。小数を表すために、科学的表記を作成したため、浮動小数点数があります。しかし、最終分析では、すべてが0と1とはまだ切り分けられません。Cの整数の簡単な履歴は、ほぼデフォルトのタイプです。コンパイラは警告を発行する場合がありますが、多くの場合、次のようなコードを書くことができます:main(void){return0;}技術的な観点から、これは次のコードに相当します:intmain(void){return0;}