亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語言超詳細(xì)文件操作基礎(chǔ)下篇

 更新時間:2022年03月15日 16:42:16   作者:K穩(wěn)重  
這篇文章主要為大家詳細(xì)介紹了C語言的文件操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

一、文件的順序讀寫

兄弟們,上一章只介紹到了如何把單個的字符或者字符串如何寫到文件里或者從文件中讀取,文件的順序讀寫后面還有幾個函數(shù)沒有介紹完,我們接著上一章繼續(xù),給大家介紹完,圖片再拷給大家回顧回顧

1圖片如下:

1.格式化的輸出函數(shù)(fprintf)

這樣我們就可以把格式化的數(shù)據(jù)寫到文件里了。

代碼如下:

#include<stdio.h>
struct S
{
	char arr[10];
	int num;
	float sc;
};
int main()
{
	struct S s = { "abcdef",20,5.5f };
	FILE* pf = fopen("test.dayta", "w");
	if (NULL == pf)
	{
		return 1;
	}
	//寫文件
	fprintf(pf, "%s %d %f", s.arr, s.num, s.sc);//這就是如何把格式化的數(shù)據(jù)寫到文件里
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
 
}

2.格式化的輸入函數(shù)(fscanf)

這樣我們就可以從文件里讀取格式化的數(shù)據(jù)了。

代碼如下:

#include<stdio.h>
struct S
{
	char arr[10];
	int num;
	float sc;
};
int main()
{
	struct S s = {0};
	FILE* pf = fopen("test.dayta", "r");
	if (NULL == pf)
	{
		return 1;
	}
	//寫文件
	fscanf(pf, "%s %d %f", s.arr, &(s.num), &(s.sc));//這就是如何把格式化的數(shù)據(jù)寫到文件里
	printf("%s %d %f", s.arr, s.num, s.sc);
	fprintf(stdout, "%s %d %f", s.arr, s.num, s.sc);//這類函數(shù)參數(shù)不同,功能就不同,可以適用于所有的流
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
 
}

3.二進制讀寫

1.二進制輸出函數(shù)(fwrite)

以二進制的方式把數(shù)據(jù)寫到文件里

代碼如下:

struct S
{
    char arr[10];
    int num;
    float sc;
};
int main()
{
    struct S s = {"abcdef",20,5.5f};
    FILE* pf = fopen("test.dayta", "w");
    if (NULL == pf)
    {
        return 1;
    }
    //寫文件
    fwrite(&s, sizeof(struct S), 1, pf);
    //關(guān)閉文件
    fclose(pf);
    pf = NULL;
    return 0;
 
}

2.二進制輸入函數(shù)

以二進制的方式從文件里讀取數(shù)據(jù)

代碼如下:

#include<stdio.h>
struct S
{
	char arr[10];
	int num;
	float sc;
};
int main()
{
	struct S s = {0};
	FILE* pf = fopen("test.dayta", "r");
	if (NULL == pf)
	{
		return 1;
	}
	//寫文件
	fread(&s, sizeof(struct S), 1, pf);
	printf("%s %d %f", s.arr, &(s.num), &(s.sc));
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
 
}

3.scanf,fscanf,sscanf、printf,fprintf,sprintf的區(qū)別

scanf —? 針對標(biāo)準(zhǔn)輸入的格式化的輸入語句—stdin

fscanf — 針對所有輸入流的格式化的輸入語句 — stdin/文件

sscanf — 從一個字符串中讀取一個格式化的數(shù)據(jù)

printf — 針對標(biāo)準(zhǔn)輸出的格式化語句 — stdout?

fprintf — 針對所有輸出流的格式化輸出語句 — stdout/文件

sprintf — 把一個格式化的數(shù)據(jù),轉(zhuǎn)換成字符串

二、文件的隨機讀寫

1.fseek函數(shù)

fseek函數(shù):根據(jù)文件指針的位置和偏移量來定位文件指針。

代碼如下:

#include<stdio.h>
int main()
{
	
	FILE* pf = fopen("test.data", "r");
	if (NULL == pf)
	{
		perror("main");
		return 1;
	}
	//讀取文件
	int ch = fgetc(pf);
	printf("%c\n", ch);
	//調(diào)整文件
 
	fseek(pf, 2, SEEK_END);
	int ch = fgetc(pf);
	printf("%c\n", ch);
 
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
 
}

2.ftell函數(shù)

ftell函數(shù):返回文件指針相對于起始位置的偏移量(告知偏移量是多少)

3.rewind函數(shù)

rewind函數(shù):讓文件指針的位置回到文件的起始位置

三、被錯誤使用的feof

feof(文件結(jié)束返回非0)

feof應(yīng)用于當(dāng)文件讀取結(jié)束的時候,判斷是讀取失敗結(jié)束,還是遇文件尾結(jié)束

fgetc函數(shù)在讀取結(jié)束的時候,會返回EOF,正常讀取的時候,返回的是讀取到的字符ASCII碼值

fgets函數(shù)在讀取結(jié)束的時候返回NULL,正常讀取的時候返回存放字符串的空間起始地址。

fread函數(shù)在讀取的時候,返回的是實際讀取到的完整元素的個數(shù)。如果發(fā)現(xiàn)讀取到的元素個數(shù)小于指定的元素個數(shù),這就是最后一次讀取了。

寫代碼test.txt文件拷貝一份,生成test2,txt

#include<stdio.h>
int main()
{
	FILE* pfread = fopen("test.txt", "r");
	if (NULL == pfread)
	{
		return 1;
	}
	FILE* pfwrite = fopen("test2.txt", "w");
	{
		if (pfread == NULL)
		{
			fclose(pfread);
			pfread = NULL;
				return 1;
		}
		//文件打開成功
		//讀寫文件
		int ch = 0;
		while((ch = fgetc(pfread))!= EOF)
		{
			//寫文件
			fputc(ch, pfwrite);
		}
	}
	//關(guān)閉文件
	fclose(pfwrite);
	pfwrite = NULL;
	return 0;
}

總結(jié)

綜合兩篇文章簡單的介紹了什么是文件,文件的使用和操作方法,學(xué)會文件的使用讓我們能更進一步加深對編程的了解,相信大家都學(xué)會了。如果上述文章有任何問題?,歡迎大佬們提出質(zhì)疑,我會虛心學(xué)習(xí)和改正,最重要的是能共同進步,共同成長,學(xué)習(xí)好編程。

到此這篇關(guān)于C語言超詳細(xì)文件操作基礎(chǔ)下篇的文章就介紹到這了,更多相關(guān)C語言 文件操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++中的對象初始化操作代碼

    C++中的對象初始化操作代碼

    對象初始化可以分為默認(rèn)初始化、直接初始化、拷貝初始化以及值初始化。本文重點給大家介紹C++中的對象初始化操作代碼,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • C語言實現(xiàn)合并字符串

    C語言實現(xiàn)合并字符串

    今天小編就為大家分享一篇C語言實現(xiàn)合并字符串,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • C語言實現(xiàn)套接字操作的示例代碼

    C語言實現(xiàn)套接字操作的示例代碼

    在C語言中,套接字(Socket)是一種進行網(wǎng)絡(luò)通信的接口,這篇文章就來和大家介紹一下C語言中是如何進行套接字操作的,需要的可以參考一下
    2023-06-06
  • c語言中的二級指針做函數(shù)參數(shù)說明

    c語言中的二級指針做函數(shù)參數(shù)說明

    這篇文章主要介紹了c語言中的二級指針做函數(shù)參數(shù)說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 基于C++類型重定義的使用詳解

    基于C++類型重定義的使用詳解

    本篇文章是對C++中類型重定義的使用進行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++ namespace相關(guān)語法實例分析

    C++ namespace相關(guān)語法實例分析

    這篇文章主要介紹了C++ namespace相關(guān)語法實例分析,對C++初學(xué)者有很好的參考借鑒價值,需要的朋友可以參考下
    2014-08-08
  • C++11運算符重載和向量類重載實例詳解(<<,>>,+,-,*等)

    C++11運算符重載和向量類重載實例詳解(<<,>>,+,-,*等)

    這篇文章主要給大家介紹了關(guān)于C++11運算符重載和向量類重載的相關(guān)資料,主要包括<<,>>,+,-,*等,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-07-07
  • Qt Designer的簡單使用方法

    Qt Designer的簡單使用方法

    用 C++ 代碼編寫圖形界面的問題就是不直觀,因此 Qt 項目開發(fā)了專門的可視化圖形界面編輯器,本文就詳細(xì)的介紹一下
    2021-08-08
  • C++實現(xiàn)LeetCode(186.翻轉(zhuǎn)字符串中的單詞之二)

    C++實現(xiàn)LeetCode(186.翻轉(zhuǎn)字符串中的單詞之二)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(186.翻轉(zhuǎn)字符串中的單詞之二),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java C++算法題解leetcode1592重新排列單詞間的空格

    Java C++算法題解leetcode1592重新排列單詞間的空格

    這篇文章主要為大家介紹了Java C++算法題解leetcode1592重新排列單詞間的空格示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09

最新評論