国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C/C++文件操作(細(xì)節(jié)滿滿,part2)

這篇具有很好參考價值的文章主要介紹了C/C++文件操作(細(xì)節(jié)滿滿,part2)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

該文章上一篇:C/C++文件操作(細(xì)節(jié)滿滿,part1)_仍有未知等待探索的博客-CSDN博客

個人主頁:仍有未知等待探索_C語言疑難,數(shù)據(jù)結(jié)構(gòu),小項目-CSDN博客

專題分欄:C語言疑難_仍有未知等待探索的博客-CSDN博客

目錄

?

一、引言

二、文件的順序

1、輸入流和輸出流

2、fputc

1.功能

2. 參數(shù)

3.用法

4.注意?

3、fgetc

1.功能?

2.參數(shù)

3.用法

4、fputs?

1、功能?

2、參數(shù)

3、用法

5、fgets?

?編輯?1、功能?

2、參數(shù)

3、用法

4、注意?

6、fprintf

1、功能?

2、參數(shù)

3、用法?

7、fscanf?

1、功能

2、參數(shù)

3、 用法

8、fwrite

?編輯

1、功能

2、參數(shù)

3、用法

4、注意?

9、fread?

1、功能

2、參數(shù)

3、用法

4、注意?

三、文件的隨機讀寫

1、fseek

2、ftell?

3、rewind?

四、二進(jìn)制文件和文本文件

五、文件讀取結(jié)束的標(biāo)志

1、文本文件讀取結(jié)束標(biāo)志

2、二進(jìn)制文件讀取結(jié)束標(biāo)志

六、文件緩沖區(qū)


?

一、引言

通過上篇文章,已經(jīng)了解了什么是文件、打開和關(guān)閉文件的操作,流的概念等。

如果對于上述的內(nèi)容感到有點陌生了,不妨去看一看,文章鏈接在開頭。

這篇文章的內(nèi)容將會包含寫文件的基本操作。

文件的順序讀寫:是每次從第一個字符開始讀和寫。

文件的隨機讀寫:是每次可以從任意一個位置讀和寫。

二、文件的順序

適用文件 功能 函數(shù)名 適用于
文本文件 字符輸入函數(shù) fgetc 所有輸入流
文本文件 字符輸出函數(shù) fputc 所有輸出流
文本文件 文本行輸入函數(shù) fgets 所有輸入流
文本文件 文本行輸出函數(shù) fputs 所有輸出流
文本文件 格式化輸入函數(shù) fscanf 所有輸入流
文本文件 格式化輸出函數(shù) fprintf 所有輸出流
二進(jìn)制文件 二進(jìn)制輸入 fread 文件
二進(jìn)制文件 二進(jìn)制輸出 fwrite 文件

1、輸入流和輸出流

流相當(dāng)于是一個過渡的過程。怎么判上述函數(shù)是輸入流還是輸出流呢?

我們可以站在內(nèi)存的視角來看,如果是數(shù)據(jù)流向內(nèi)存,我們就可以看作是輸入流。反之,則是輸出流。

就以fgetc和fputc為例:

C/C++文件操作(細(xì)節(jié)滿滿,part2),C語言疑難,c語言,開發(fā)語言

2、fputc

C/C++文件操作(細(xì)節(jié)滿滿,part2),C語言疑難,c語言,開發(fā)語言

1.功能

將一個字符character寫進(jìn)stream流中。

2. 參數(shù)

character:字符(字符的本質(zhì)就是ASCII碼值,是整數(shù))。

stream:文件指針。

3.用法

#include<stdio.h>
int main()
{
    //以‘只寫’的方式打開文件
	FILE* pf = fopen("test.txt", "w");
    if (pf == NULL)
	{
		perror("fopen");
		return 0;
	}
	//處理
	//輸入
	for (int i = 'a'; i <= 'z'; i++)
		fputc(i, pf);
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
}

4.注意?

用什么方式打開文件就只能完成該功能。就比如說,以‘只寫’的方式打開文件,就不能進(jìn)行讀取操作。

如果對于打開方式模糊了,請點擊下面鏈接,查看上一篇的內(nèi)容:

C/C++文件操作(細(xì)節(jié)滿滿,part1)_仍有未知等待探索的博客-CSDN博客

3、fgetc

C/C++文件操作(細(xì)節(jié)滿滿,part2),C語言疑難,c語言,開發(fā)語言

1.功能?

?從stream流中獲取數(shù)據(jù)。

2.參數(shù)

文件指針類型的stream流。

3.用法

如果獲取失敗,函數(shù)將返回EOF

//以‘只讀’的方式打開文件
	FILE* pf = fopen("test.txt", "r");
    if (pf == NULL)
	{
		perror("fopen");
		return 0;
	}
	//處理
	//輸出
	int ch;
	while((ch=fgetc(pf))!=EOF)
    {
        printf("%c ",ch);
    }
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
}

4、fputs?

C/C++文件操作(細(xì)節(jié)滿滿,part2),C語言疑難,c語言,開發(fā)語言

1、功能?

將一個字符串寫入流中。

2、參數(shù)

str:需要寫入文件的參數(shù)。

stream:文件流。

3、用法

如果沒有‘\n’的話,他會把數(shù)據(jù)輸入在一行。?

如果把文件指針pf換成stdout的話,程序會把數(shù)據(jù)打印在屏幕上。

#include<stdio.h>
int main()
{
	//以‘只寫’的方式打開文件
	FILE* pf = fopen("test.txt", "w");
    if (pf == NULL)
	{
		perror("fopen");
		return 0;
	}
	//處理
	fputs("abcd", pf);//不換行寫法
	fputs("abcd\n", pf);//換行寫法
    fputs("abcd", stdout);//將數(shù)據(jù)打印在屏幕上
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
}

C/C++文件操作(細(xì)節(jié)滿滿,part2),C語言疑難,c語言,開發(fā)語言

5、fgets?

C/C++文件操作(細(xì)節(jié)滿滿,part2),C語言疑難,c語言,開發(fā)語言?1、功能?

從流中獲取字符串。

2、參數(shù)

str:字符串。

num:讀取的個數(shù)。

stream:文件流。

3、用法

如果獲取失敗,函數(shù)將返回EOF

#include<stdio.h>
int main()
{
	//以‘只讀’的方式打開文件
	FILE* pf = fopen("test.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 0;
	}
	//處理
	char str[20];
	fgets(str, 10, pf);
	printf("%s", str);
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
}

4、注意?

  1. 函數(shù)最多只會讀取一行的數(shù)據(jù)。
  2. 當(dāng)數(shù)據(jù)足夠多時,參數(shù)為num,函數(shù)只會讀取num-1個數(shù)據(jù)。

6、fprintf

C/C++文件操作(細(xì)節(jié)滿滿,part2),C語言疑難,c語言,開發(fā)語言

1、功能?

將格式化數(shù)據(jù)寫入文件流中。

2、參數(shù)

通過將fprintf和printf的參數(shù)相比較,會發(fā)現(xiàn),fprintf的參數(shù)就比printf的參數(shù)多了一個文件指針。?

C/C++文件操作(細(xì)節(jié)滿滿,part2),C語言疑難,c語言,開發(fā)語言

3、用法?

#include<stdio.h>
struct S
{
	float f;
	char ch;
	int n;
};
int main()
{
	struct S s = { 4.14f,'w',1 };
	//以‘只 寫’的方式打開文件
	FILE* pf = fopen("test.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return 0;
	}
	//處理
	printf("%f %c %d\n", s.f, s.ch, s.n);
	fprintf(pf,"%f %c %d\n", s.f, s.ch, s.n);
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
}

7、fscanf?

C/C++文件操作(細(xì)節(jié)滿滿,part2),C語言疑難,c語言,開發(fā)語言

1、功能

從流中讀取數(shù)據(jù)。

2、參數(shù)

fscanf和scanf的參數(shù)差不多,多了一個文件流stream。

C/C++文件操作(細(xì)節(jié)滿滿,part2),C語言疑難,c語言,開發(fā)語言

3、 用法

#include<stdio.h>
struct S
{
	float f;
	char ch;
	int n;
};
int main()
{
	struct S s = { 4.14f,'r',1 };
	FILE* pf = fopen("test.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 0;
	}
	//處理
	fscanf(pf, "%f %c %d", &(s.f), &(s.ch), &(s.n));
	printf("%f %c %d", s.f, s.ch, s.n);
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
}

8、fwrite

C/C++文件操作(細(xì)節(jié)滿滿,part2),C語言疑難,c語言,開發(fā)語言

1、功能

將ptr中的數(shù)據(jù)寫入流中,大小為size,個數(shù)為count。

2、參數(shù)

ptr:指向要寫入文件流中的數(shù)據(jù)的指針。

size:每個數(shù)據(jù)的大小。

count:數(shù)據(jù)個數(shù)。

stream:要寫入的文件流中。

3、用法

#include<stdio.h>
int main()
{
	FILE* pf = fopen("test.txt", "wb");//abcdef
	if (pf == NULL)
	{
		perror("fopen");
		return 0;
	}
	//處理
	char str[] = "abcd";
	fwrite(str, sizeof(char), sizeof(str) / sizeof(str[0]), pf);
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
}

4、注意?

文件的打開方式要和函數(shù)匹配,要用二進(jìn)制的寫的方式

9、fread?

C/C++文件操作(細(xì)節(jié)滿滿,part2),C語言疑難,c語言,開發(fā)語言

1、功能

從文件流中讀取數(shù)據(jù)。

2、參數(shù)

ptr:指向文件流中的數(shù)據(jù)所要存到的位置的指針。

size:每個數(shù)據(jù)的大小。

count:數(shù)據(jù)個數(shù)。

stream:文件流。

3、用法

#include<stdio.h>
int main()
{
	FILE* pf = fopen("test.txt", "rb");//abcdef
	if (pf == NULL)
	{
		perror("fopen");
		return 0;
	}
	//處理
	char str[20];
	fread(str, sizeof(char), sizeof(str) / sizeof(str[0]), pf);
	printf("%s", str);
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
}

4、注意?

文件的打開方式要和函數(shù)匹配,要用二進(jìn)制的讀的方式

三、文件的隨機讀寫

根據(jù)文件指針的位置和偏移量來確定文件指針的位置。

文件指針當(dāng)前位置
SEEK_SET Beginning of file
SEEK_END Current position of the file pointer
SEEK_CUR End of file

1、fseek

C/C++文件操作(細(xì)節(jié)滿滿,part2),C語言疑難,c語言,開發(fā)語言?功能是改變文件指針的位置。

#include<stdio.h>
int main()
{
	FILE* pf = fopen("test.txt", "r");//abcdef
	if (pf == NULL)
	{
		perror("fopen");
		return 0;
	}
	//處理
	int ch;
	ch = fgetc(pf);//a
	printf("%c\n", ch);
	ch = fgetc(pf);//b
	printf("%c\n", ch);
	ch = fgetc(pf);//c
	printf("%c\n", ch);
	fseek(pf, -1, SEEK_CUR);
	ch = fgetc(pf);
	printf("%c\n", ch);//c
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
}

2、ftell?

C/C++文件操作(細(xì)節(jié)滿滿,part2),C語言疑難,c語言,開發(fā)語言

功能是返回文件當(dāng)前指針的偏移量。

#include<stdio.h>
int main()
{
	FILE* pf = fopen("test.txt", "r");//abcdef
	if (pf == NULL)
	{
		perror("fopen");
		return 0;
	}
	//處理
	int ch;
	ch = fgetc(pf);//a
	printf("%c\n", ch);
	ch = fgetc(pf);//b
	printf("%c\n", ch);
	ch = fgetc(pf);//c
	printf("%c\n", ch);
	int pos = ftell(pf);
	printf("%d", pos);
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
}

3、rewind?

C/C++文件操作(細(xì)節(jié)滿滿,part2),C語言疑難,c語言,開發(fā)語言

功能是將文件指針返回起始位置。

#include<stdio.h>
int main()
{
	FILE* pf = fopen("test.txt", "r");//abcdef
	if (pf == NULL)
	{
		perror("fopen");
		return 0;
	}
	//處理
	int ch;
	ch = fgetc(pf);//a
	ch = fgetc(pf);//b
	ch = fgetc(pf);//c
	int pos = ftell(pf);
	printf("%d\n", pos);
	rewind(pf);
	pos = ftell(pf);
	printf("%d", pos);
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
}

四、二進(jìn)制文件和文本文件

根據(jù)數(shù)據(jù)的存儲形式,文件可以分為二進(jìn)制文件和文本文件。

數(shù)據(jù)在文件中以二進(jìn)制存儲,就是二進(jìn)制文件。

數(shù)據(jù)在文件中以ASCII碼值存儲,就是文本文件。

五、文件讀取結(jié)束的標(biāo)志

在文件讀取過程中,不能用feof函數(shù)的返回值直接用來判斷文件的是否結(jié)束。

1、文本文件讀取結(jié)束標(biāo)志

fgetc——判斷是否為EOF

fgets——判斷是否為NULL

2、二進(jìn)制文件讀取結(jié)束標(biāo)志

fread——判斷返回值是否小于實際要讀的個數(shù)。

六、文件緩沖區(qū)

C/C++文件操作(細(xì)節(jié)滿滿,part2),C語言疑難,c語言,開發(fā)語言

謝謝大家支持!?文章來源地址http://www.zghlxwxcb.cn/news/detail-714251.html

到了這里,關(guān)于C/C++文件操作(細(xì)節(jié)滿滿,part2)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • (Part2)Python編寫的計算跳過帶有特定數(shù)字的車位數(shù)量小程序,并利用wxPython做成GUI界面打包成可執(zhí)行文件

    (Part2)Python編寫的計算跳過帶有特定數(shù)字的車位數(shù)量小程序,并利用wxPython做成GUI界面打包成可執(zhí)行文件

    ? ? ? ? ?本文主要講述利用Python來編寫一個可以計算跳過帶有特定數(shù)字的車位數(shù)量小程序。并且又利用第三方庫wxPython做出GUI界面,打包成可執(zhí)行文件。 ????????現(xiàn)實中有這樣的實際案例,某樓盤的地下車庫的數(shù)量有2000多個車位,車位分成了5個分區(qū),每個分區(qū)有400-500個

    2024年03月12日
    瀏覽(30)
  • 集群配置,hadoop配置過程,細(xì)節(jié)滿滿

    集群配置,hadoop配置過程,細(xì)節(jié)滿滿

    做一個hadoop的配置流程的全記錄,把遇到的問題和細(xì)節(jié)全都記錄了下來。 目錄 1.安裝前準(zhǔn)備 jdk,hadoop安裝包: 2.開始安裝jdk,hadoop 導(dǎo)入安裝包 修改jdk,hadoop文件用戶所屬 配置jdk,hadoop 環(huán)境變量,添加對應(yīng)環(huán)境變量 測試安裝是否成功 ?3.hadoop 集群配置文件 core-site.xml hdfs-

    2024年02月05日
    瀏覽(22)
  • Linux之權(quán)限(內(nèi)容詳細(xì),細(xì)節(jié)滿滿)

    Linux之權(quán)限(內(nèi)容詳細(xì),細(xì)節(jié)滿滿)

    個人主頁:點我進(jìn)入主頁 專欄分類:C語言初階? ? ??C語言程序設(shè)計————KTV? ? ? ?C語言小游戲? ? ?C語言進(jìn)階 C語言刷題? ? ? ?數(shù)據(jù)結(jié)構(gòu)初階? ??Linux 歡迎大家點贊,評論,收藏。 一起努力 目錄 一.前言 二.權(quán)限修改的兩種方法 2.1利用字符修改 2.1.1Linux中文件的類型

    2024年01月25日
    瀏覽(20)
  • D47|動態(tài)規(guī)劃-子序列part2

    D47|動態(tài)規(guī)劃-子序列part2

    ???????? ????????左為判斷公共子序列,右為判斷子序列,感覺代碼完全可以套用,如果公共子序列的長度是較短的字符串的長度的話即輸出true,如果不是即輸出false。 ? ? ? ? 完全不一樣的思路,一個新的操縱方法: 編輯距離! 動態(tài)規(guī)劃五部曲: 1)確定dp數(shù)組(

    2024年02月02日
    瀏覽(27)
  • C/C++自定義類型(2)細(xì)節(jié)滿滿!

    C/C++自定義類型(2)細(xì)節(jié)滿滿!

    該文章的上一篇文章:C/C++自定義類型(1)-CSDN博客 個人主頁:仍有未知等待探索_C語言疑難,數(shù)據(jù)結(jié)構(gòu),小項目-CSDN博客 專題分欄:C語言疑難_仍有未知等待探索的博客-CSDN博客 目錄 ? 一、引言 二、枚舉 1、枚舉是什么 ?2、枚舉的格式 3、枚舉類型的初始化 4、枚舉類型中常量

    2024年02月08日
    瀏覽(17)
  • ChatGPT 教程 - 從入門到精通-part2-完整版

    本教程旨在幫助讀者從入門到精通使用 ChatGPT 模型。我們將從基本用法開始,介紹如何創(chuàng)建 ChatGPT 實例、發(fā)送文本輸入和處理模型輸出。然后,我們將探討如何優(yōu)化對話流程,包括上下文管理、對話歷史追蹤、控制生成長度和多樣性。接著,我們將深入研究處理特定任務(wù)的技

    2024年02月08日
    瀏覽(19)
  • 【Linux】進(jìn)度條小程序——深度解剖(細(xì)節(jié)滿滿)

    【Linux】進(jìn)度條小程序——深度解剖(細(xì)節(jié)滿滿)

    ????? ? 前言 大家好吖,歡迎來到 YY 滴 Linux系列 ,熱烈歡迎! 本章主要內(nèi)容面向接觸過Linux的老鐵,主要內(nèi)容含 歡迎訂閱 YY 滴Linux專欄!更多干貨持續(xù)更新!以下是傳送門! 訂閱專欄閱讀: YY 的《Linux》系列 ????? 【Linux】Linux環(huán)境搭建(新手指南,購買,登錄)(

    2024年02月14日
    瀏覽(53)
  • LaWGPT安裝和使用教程的復(fù)現(xiàn)版本【細(xì)節(jié)滿滿】

    LaWGPT安裝和使用教程的復(fù)現(xiàn)版本【細(xì)節(jié)滿滿】

    LaWGPT 是一系列基于中文法律知識的開源大語言模型。該系列模型在通用中文基座模型(如 Chinese-LLaMA、ChatGLM等)的基礎(chǔ)上擴充法律領(lǐng)域?qū)S性~表、大規(guī)模中文法律語料預(yù)訓(xùn)練,增強了大模型在法律領(lǐng)域的基礎(chǔ)語義理解能力。LaWGPT是本人嘗試使用和微調(diào)的第一個法律專業(yè)領(lǐng)域的

    2024年01月18日
    瀏覽(63)
  • 【Linux】進(jìn)度條小程序的深度解剖(細(xì)節(jié)滿滿)

    【Linux】進(jìn)度條小程序的深度解剖(細(xì)節(jié)滿滿)

    ????? ? 前言 大家好吖,歡迎來到 YY 滴 Linux系列 ,熱烈歡迎! 本章主要內(nèi)容面向接觸過Linux的老鐵,主要內(nèi)容含 歡迎訂閱 YY 滴Linux專欄!更多干貨持續(xù)更新!以下是傳送門! 訂閱專欄閱讀: YY 的《Linux》系列 ????? 【Linux】Linux環(huán)境搭建(新手指南,購買,登錄)(

    2024年02月16日
    瀏覽(42)
  • 深度學(xué)習(xí)需要掌握的數(shù)學(xué)知識②【線性代數(shù)-part2】

    深度學(xué)習(xí)需要掌握的數(shù)學(xué)知識②【線性代數(shù)-part2】

    1.克萊姆法則 線性方程組 { a 11 x 1 + a 12 x 2 + ? + a 1 n x n = b 1 a 21 x 1 + a 22 x 2 + ? + a 2 n x n = b 2 ? ? ? ? ? ? ? ? ? a n 1 x 1 + a n 2 x 2 + ? + a n n x n = b n begin{cases} a_{11}x_{1} + a_{12}x_{2} + cdots +a_{1n}x_{n} = b_{1} \\\\ a_{21}x_{1} + a_{22}x_{2} + cdots + a_{2n}x_{n} =b_{2} \\\\ quadcdotscdotscd

    2024年02月16日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包