1. 文件IO總結(jié)
文件IO操作: 對文件系統(tǒng)里的文件進(jìn)行: 打開、創(chuàng)建、讀、寫、關(guān)閉等運(yùn)用。
C語言下標(biāo)準(zhǔn)文件IO接口(函數(shù)):
(1)頭文件: stdio.h 輸入輸出函數(shù): printf 、scanf
(2)相關(guān)函數(shù): fopen、fread、fwrite、fclose
2.1 標(biāo)準(zhǔn)文件操作有兩套函數(shù):
1.標(biāo)準(zhǔn)C語言下的文件操作接口。fopen系列
常用于: 對普通文件的讀寫。
2.Linux操作系統(tǒng)下的文件操作接口。open系列
常用于: 對設(shè)備文件進(jìn)行讀寫。 (鼠標(biāo)、鍵盤、聲卡、..)
2. C語言標(biāo)準(zhǔn)文件操作接口
2.1 最常用的4個函數(shù)
#include
//打開文件
FILE *fopen(const char *path, const char *mode);
//讀文件
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
//寫文件
size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
//關(guān)閉文件
int fclose(FILE *fp);
2.3 寫函數(shù)的基本運(yùn)用
#include
#include
#include
int main()
{
FILE *file;
int cnt;
/*1. 打開文件*/
file=fopen("D:/123.txt","a+b");
if(file==NULL)
{
printf("文件打開失敗!\n");
return -1;
}
/*2. 寫數(shù)據(jù)*/
cnt=fwrite("1234567890",1,10,file);
/*3. 關(guān)閉文件*/
fclose(file);
printf("cnt=%d\n",cnt);
return 0;
}
2.4 讀函數(shù)基本運(yùn)用
#include
#include
#include
int main()
{
FILE *file;
int cnt;
char buff[100];
/*1. 打開文件*/
file=fopen("D:/123.txt","rb"); //malloc
if(file==NULL)
{
printf("文件打開失敗!\n");
return -1;
}
/*2. 寫數(shù)據(jù)*/
cnt=fread(buff,1,100,file);
/*3. 關(guān)閉文件*/
fclose(file); //free
buff[cnt]='\0';
printf("%s\n",buff);
printf("cnt=%d\n",cnt);
return 0;
}
2.5 文件指針位置偏移 (自動向后偏移)
#include
#include
#include
int main()
{
FILE *file;
int cnt;
char data;
/*1. 打開文件*/
file=fopen("D:/123.txt","rb"); //malloc
if(file==NULL)
{
printf("文件打開失敗!\n");
return -1;
}
/*2. 讀數(shù)據(jù)---驗(yàn)證文件指針是否可否自動向后偏移*/
cnt=fread(&data,1,1,file);
printf("data=%c\n",data);
cnt=fread(&data,1,1,file);
printf("data=%c\n",data);
cnt=fread(&data,1,1,file);
printf("data=%c\n",data);
cnt=fread(&data,1,1,file);
printf("data=%c\n",data);
cnt=fread(&data,1,1,file);
printf("data=%c\n",data);
/*3. 關(guān)閉文件*/
fclose(file); //free
return 0;
}
2.6 設(shè)置文件指針位置
#include
#include
#include
int main()
{
FILE *file;
int cnt;
char data;
/*1. 打開文件*/
file=fopen("D:/123.txt","rb"); //malloc
if(file==NULL)
{
printf("文件打開失敗!\n");
return -1;
}
/*2. 偏移文件指針*/
fseek(file,5,SEEK_SET);
/*3. 讀數(shù)據(jù)---驗(yàn)證文件指針是否可否自動向后偏移*/
cnt=fread(&data,1,1,file);
printf("data=%c\n",data);
/*4. 關(guān)閉文件*/
fclose(file); //free
return 0;
}
2.7 以上午所學(xué)的函數(shù),如何判斷文件讀完了?到文件結(jié)尾?
#include
#include
#include
int main()
{
FILE *file;
int cnt;
char data;
/*1. 打開文件*/
file=fopen("D:/123.txt","rb"); //malloc
if(file==NULL)
{
printf("文件打開失敗!\n");
return -1;
}
/*2. 偏移文件指針*/
fseek(file,5,SEEK_SET);
/*3. 讀數(shù)據(jù)---驗(yàn)證文件指針是否可否自動向后偏移*/
while(1)
{
cnt=fread(&data,1,1,file);
if(cnt!=1)break;
printf("data=%c\n",data);
}
/*4. 關(guān)閉文件*/
fclose(file); //free
return 0;
}
2.8 文件讀寫結(jié)構(gòu)體數(shù)據(jù)
//寫結(jié)構(gòu)體數(shù)據(jù)
#include
#include
#include
struct MyStruct
{
int a;
int b;
char c[100];
};
int main()
{
FILE *file;
int cnt;
struct MyStruct stu={666,888,"C語言文件操作學(xué)習(xí)"};
/*1. 打開文件*/
file=fopen("D:/123.txt","wb");
if(file==NULL)
{
printf("文件打開失敗!\n");
return -1;
}
/*2. 讀數(shù)據(jù)*/
cnt=fwrite(&stu,1,sizeof(struct MyStruct),file);
printf("cnt=%d\n",cnt);
/*3. 關(guān)閉文件*/
fclose(file); //free
return 0;
}
//讀結(jié)構(gòu)體數(shù)據(jù)
#include
#include
#include
struct MyStruct
{
int a;
int b;
char c[100];
};
int main()
{
FILE *file;
int cnt;
struct MyStruct stu;
/*1. 打開文件*/
file=fopen("D:/123.txt","rb");
if(file==NULL)
{
printf("文件打開失敗!\n");
return -1;
}
/*2. 讀數(shù)據(jù)*/
cnt=fread(&stu,1,sizeof(struct MyStruct),file);
printf("cnt=%d\n",cnt);
printf("%d,%d,%s\n",stu.a,stu.b,stu.c);
/*3. 關(guān)閉文件*/
fclose(file); //free
return 0;
}
2.9 文件操作的作業(yè)練習(xí)
1. 學(xué)習(xí)文件基本讀寫使用
2. 編寫文件拷貝程序。 實(shí)現(xiàn)文件拷貝。
3. 文件加密解密實(shí)現(xiàn)。 需要編寫一個菜單。
4. 完善學(xué)生管理系統(tǒng)。
需要將所有學(xué)生信息保存到文件里,完善功能。
審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報(bào)投訴
-
C語言
+關(guān)注
關(guān)注
180文章
7581瀏覽量
135563 -
文件系統(tǒng)
+關(guān)注
關(guān)注
0文章
283瀏覽量
19860 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4258瀏覽量
62227
發(fā)布評論請先 登錄
相關(guān)推薦
C語言-文件編程
這篇文章介紹C語言的文件編程函數(shù),案例代碼是在Linux環(huán)境下運(yùn)行測試的分別介紹了C語言標(biāo)準(zhǔn)庫的
C語言文件操作
C語言中沒有輸入輸出語句,所有的輸入輸出功能都用 ANSI C提供的一組標(biāo)準(zhǔn)庫函數(shù)來實(shí)現(xiàn)。
發(fā)表于 11-09 10:42
?475次閱讀
C語言的函數(shù)如何返回多個數(shù)據(jù)
C語言的函數(shù)如何返回多個數(shù)據(jù)?這個操作在寫代碼的時候還經(jīng)常遇到。
發(fā)表于 07-25 10:53
?895次閱讀
linux基本操作與C語言基礎(chǔ)
目錄C語言基礎(chǔ)C++linux基本操作io操作數(shù)據(jù)結(jié)構(gòu)進(jìn)程線程網(wǎng)絡(luò)編程實(shí)戰(zhàn)項(xiàng)目
發(fā)表于 12-17 07:53
C語言字符串操作總結(jié)大全(超詳細(xì))
本文對c語言字符串的操作進(jìn)行了詳細(xì)的總結(jié)分析,需要的朋友可以參考。
發(fā)表于 11-15 14:19
?2041次閱讀
標(biāo)準(zhǔn)IO的操作原理及操作函數(shù)相關(guān)資料下載
標(biāo)準(zhǔn)IO的操作原理及操作函數(shù)相關(guān)資料下載
發(fā)表于 04-03 16:53
?4次下載
C語言數(shù)據(jù)輸入輸出函數(shù)總結(jié)資料免費(fèi)下載
本文檔的主要內(nèi)容詳細(xì)介紹的是C語言數(shù)據(jù)輸入輸出函數(shù)總結(jié)資料免費(fèi)下載。
發(fā)表于 09-29 15:51
?6次下載
C語言入門教學(xué)之函數(shù)資料總結(jié)免費(fèi)下載
本文檔的主要內(nèi)容詳細(xì)介紹的是C語言入門教學(xué)之函數(shù)資料總結(jié)免費(fèi)下載內(nèi)容包括了:1 庫函數(shù)2 函數(shù)的
發(fā)表于 10-23 17:53
?3次下載
C語言教程之文件函數(shù)的詳細(xì)資料說明
本文檔詳細(xì)介紹的是C語言教程之文件函數(shù)的詳細(xì)資料說明主要內(nèi)容包括了:1.文件的基本概念,2.文本文件
發(fā)表于 02-21 11:11
?1次下載
stm32中的io函數(shù) STM32中的IO操作
STM32系列單片機(jī)芯片的庫函數(shù)有很多種,而負(fù)責(zé)IO操作的庫函數(shù)是GPIO,GPIO函數(shù)在STM32單片機(jī)頭
單片機(jī)IO口操作總結(jié)
單片機(jī)IO口操作總結(jié)一、單片機(jī)IO口概述二、單片機(jī)IO口操作1、輸入口使用2、輸出口使用三、關(guān)于
發(fā)表于 11-05 13:06
?31次下載
c語言gets函數(shù)可以輸入數(shù)字嗎
C語言中的gets函數(shù)是用來讀取字符串的,而不是用來讀取數(shù)字的。它會讀取輸入的字符直到遇到換行符或者文件結(jié)束符。因此,如果你嘗試使用gets函數(shù)
評論