色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

C語言_文件操作相關練習題

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2022-08-14 09:55 ? 次閱讀

當前文章列出了4個文件編程相關的練習題。文件拷貝實現(xiàn)、 文件加密、學生管理系統(tǒng)鏈表模板(未添加文件操作)、學生管理系統(tǒng)模板(通過文件系統(tǒng)保存信息)、等4個例子。

1.1 文件拷貝實現(xiàn)

#include 
#include 
#include 
int main()
{
	/*1. 打開源文件*/
	FILE *file_src;
	FILE *file_new;
	unsigned char buff[1024];
	unsigned int cnt;

	file_src=fopen("D:/123.pdf","rb");
	if(file_src==NULL)
	{
		printf("源文件打開失敗!\n");
		return -1;
	}
	/*2. 創(chuàng)建新文件*/
	file_new=fopen("D:/456.pdf","wb");
	if(file_new==NULL)
	{
		printf("新文件創(chuàng)建失敗!\n");
		return -1;
	}
	/*3. 拷貝文件*/
	while(!feof(file_src))
	{
		cnt=fread(buff,1,1024,file_src);
		fwrite(buff,1,cnt,file_new);
	}
	/*4. 關閉文件*/
	fclose(file_new);
	fclose(file_src);
	printf("文件拷貝成功!\n");
	return 0;
}

1.2 文件加密

使用: 異或 ^
密碼類型: (1) 整型密碼 (2) 字符串密碼
比如: 銀行提款機的密碼、QQ密碼
加密代碼:

#include 
#include 
#include 
int main()
{
	/*1. 打開源文件*/
	FILE *file_src;
	FILE *file_new;
	unsigned char buff[1024];
	unsigned int cnt;
	unsigned int password=123456; //密碼數(shù)據(jù)
	unsigned int data;  //存放讀取的數(shù)據(jù)

	file_src=fopen("D:/123.pdf","rb");
	if(file_src==NULL)
	{
		printf("源文件打開失敗!\n");
		return -1;
	}
	/*2. 創(chuàng)建新文件*/
	file_new=fopen("D:/456.pdf","wb");
	if(file_new==NULL)
	{
		printf("新文件創(chuàng)建失敗!\n");
		return -1;
	}
	/*3. 文件加密*/
	while(!feof(file_src))
	{
		cnt=fread(&data,1,4,file_src);
		data=data^password;//文件數(shù)據(jù)加密
		fwrite(&data,1,cnt,file_new);
	}
	/*4. 關閉文件*/
	fclose(file_new);
	fclose(file_src);
	printf("文件加密成功!\n");
	return 0;
}

解密代碼:

?
#include 
#include 
#include 
int main()
{
	/*1. 打開源文件*/
	FILE *file_src;
	FILE *file_new;
	unsigned char buff[1024];
	unsigned int cnt;
	unsigned int password=123456; //密碼數(shù)據(jù)
	unsigned int data;  //存放讀取的數(shù)據(jù)

	file_src=fopen("D:/456.pdf","rb");
	if(file_src==NULL)
	{
		printf("源文件打開失敗!\n");
		return -1;
	}
	/*2. 創(chuàng)建新文件*/
	file_new=fopen("D:/789.pdf","wb");
	if(file_new==NULL)
	{
		printf("新文件創(chuàng)建失敗!\n");
		return -1;
	}
	/*3. 文件加密*/
	while(!feof(file_src))
	{
		cnt=fread(&data,1,4,file_src);
		data=data^password;//文件數(shù)據(jù)加密
		fwrite(&data,1,cnt,file_new);
	}
	/*4. 關閉文件*/
	fclose(file_new);
	fclose(file_src);
	printf("文件解密成功!\n");
	return 0;
}

1.3 學生管理系統(tǒng)鏈表模板(未添加文件操作)

#include 
#include 
#include 

//存放信息的結構體
struct MyStruct
{
	char Name[50]; //存放姓名
	int Number;    //存放編號
	struct MyStruct *next; //存放下一個節(jié)點的地址
};

//鏈表相關的函數(shù)接口
struct MyStruct *ListHead=NULL; //鏈表頭
struct MyStruct *CreateListHead(struct MyStruct *head);
void AddrListInfo(struct MyStruct *head,struct MyStruct data);
void DeleteListInfo(struct MyStruct *head,int number);
void PrintListAllInfo(struct MyStruct *head);
int main()
{
	struct MyStruct data1={"張三",123};
	struct MyStruct data2={"李四",456};
	struct MyStruct data3={"小王",789};
	ListHead=CreateListHead(ListHead);
	
	//添加信息
	AddrListInfo(ListHead,data1);
	AddrListInfo(ListHead,data2);
	AddrListInfo(ListHead,data3);

	//刪除節(jié)點
	DeleteListInfo(ListHead,123);
	DeleteListInfo(ListHead,789);

	//打印
	PrintListAllInfo(ListHead);
	return 0;
}
/*
函數(shù)功能: 創(chuàng)建鏈表頭
*/
struct MyStruct *CreateListHead(struct MyStruct *head)
{
	if(head==NULL)
	{
		head=malloc(sizeof(struct MyStruct));
		head->next=NULL;
	}
	return head;
}

/*
函數(shù)功能: 在鏈表結尾添加節(jié)點
*/
void AddrListInfo(struct MyStruct *head,struct MyStruct data)
{
	struct MyStruct *p=head;
	struct MyStruct *tmp=NULL;

	while(p->next!=NULL)
	{
		p=p->next;
	}
	tmp=malloc(sizeof(struct MyStruct));
	memcpy(tmp,&data,sizeof(struct MyStruct));
	p->next=tmp;
	tmp->next=NULL;
}

/*
函數(shù)功能: 根據(jù)結構體里特有的成員區(qū)分進行刪除鏈表節(jié)點信息
函數(shù)參數(shù): int numbe  編號
*/
void DeleteListInfo(struct MyStruct *head,int number)
{
	struct MyStruct *p=head;
	struct MyStruct *tmp=NULL;

	while(p->next!=NULL)
	{
		tmp=p; //保存上一個節(jié)點的信息
		p=p->next;
		if(p->Number==number)
		{
			tmp->next=tmp->next->next;
			free(p);
			p=head; //鏈表頭歸位
		}
	}
}

/*
函數(shù)功能: 打印所有節(jié)點信息
函數(shù)參數(shù): int numbe  編號
*/
void PrintListAllInfo(struct MyStruct *head)
{
	struct MyStruct *p=head;
	int cnt=0;
	printf("\n鏈表全部信息如下:\n");
	while(p->next!=NULL)
	{
		p=p->next;
		cnt++;
		printf("第%d個節(jié)點信息: %s,%d\n",cnt,p->Name,p->Number);
	}
}

1.4 學生管理系統(tǒng)模板(通過文件系統(tǒng)保存信息)

#include 
#include 
#include 

//存放信息的結構體
struct MyStruct
{
	char Name[50]; //存放姓名
	int Number;    //存放編號
	struct MyStruct *next; //存放下一個節(jié)點的地址
};

//鏈表相關的函數(shù)接口
struct MyStruct *ListHead=NULL; //鏈表頭
struct MyStruct *CreateListHead(struct MyStruct *head);
void AddrListInfo(struct MyStruct *head,struct MyStruct data);
void DeleteListInfo(struct MyStruct *head,int number);
void PrintListAllInfo(struct MyStruct *head);

//文件操作相關函數(shù)
void SaveListAllInfo(struct MyStruct *head,char *path);
void GetListAllInfo(struct MyStruct *head,char *path);

#if 0
int main()
{
	struct MyStruct data1={"張三",123};
	struct MyStruct data2={"李四",456};
	struct MyStruct data3={"小王",789};
	ListHead=CreateListHead(ListHead);
	
	AddrListInfo(ListHead,data1);
	AddrListInfo(ListHead,data2);
	AddrListInfo(ListHead,data3);

	//保存節(jié)點信息
	SaveListAllInfo(ListHead,"D:/list.ini");

	//打印
	PrintListAllInfo(ListHead);
	return 0;
}
#endif

#if 1
int main()
{
	ListHead=CreateListHead(ListHead);

	//獲取節(jié)點信息
	GetListAllInfo(ListHead,"D:/list.ini");

	//打印
	PrintListAllInfo(ListHead);
	return 0;
}
#endif

/*
函數(shù)功能: 創(chuàng)建鏈表頭
*/
struct MyStruct *CreateListHead(struct MyStruct *head)
{
	if(head==NULL)
	{
		head=malloc(sizeof(struct MyStruct));
		head->next=NULL;
	}
	return head;
}

/*
函數(shù)功能: 在鏈表結尾添加節(jié)點
*/
void AddrListInfo(struct MyStruct *head,struct MyStruct data)
{
	struct MyStruct *p=head;
	struct MyStruct *tmp=NULL;

	while(p->next!=NULL)
	{
		p=p->next;
	}
	tmp=malloc(sizeof(struct MyStruct));
	memcpy(tmp,&data,sizeof(struct MyStruct));
	p->next=tmp;
	tmp->next=NULL;
}

/*
函數(shù)功能: 根據(jù)結構體里特有的成員區(qū)分進行刪除鏈表節(jié)點信息
函數(shù)參數(shù): int numbe  編號
*/
void DeleteListInfo(struct MyStruct *head,int number)
{
	struct MyStruct *p=head;
	struct MyStruct *tmp=NULL;

	while(p->next!=NULL)
	{
		tmp=p; //保存上一個節(jié)點的信息
		p=p->next;
		if(p->Number==number)
		{
			tmp->next=tmp->next->next;
			free(p);
			p=head; //鏈表頭歸位
		}
	}
}

/*
函數(shù)功能: 打印所有節(jié)點信息
函數(shù)參數(shù): int numbe  編號
*/
void PrintListAllInfo(struct MyStruct *head)
{
	struct MyStruct *p=head;
	int cnt=0;
	printf("\n鏈表全部信息如下:\n");
	while(p->next!=NULL)
	{
		p=p->next;
		cnt++;
		printf("第%d個節(jié)點信息: %s,%d\n",cnt,p->Name,p->Number);
	}
}
/*
函數(shù)功能: 保存鏈表節(jié)點信息
*/
void SaveListAllInfo(struct MyStruct *head,char *path)
{
	struct MyStruct *p=head;
	FILE *file;
	file=fopen(path,"a+b");
	if(file==NULL)
	{
		printf("保存信息的文件打開失敗!\n");
		return ;
	}
	while(p->next!=NULL)
	{
		p=p->next;
		fwrite(p,1,sizeof(struct MyStruct),file);
	}
	fclose(file);
}

/*
函數(shù)功能: 從文件里獲取鏈表節(jié)點信息
*/
void GetListAllInfo(struct MyStruct *head,char *path)
{
	struct MyStruct *p=head;
	FILE *file;
	struct MyStruct data;

	file=fopen(path,"rb");
	if(file==NULL)
	{
		printf("保存信息的文件打開失敗!\n");
		return;
	}
	//循環(huán)讀取文件里的數(shù)據(jù)
	while(!feof(file))
	{
		fread(&data,1,sizeof(struct MyStruct),file); //讀取鏈表節(jié)點數(shù)據(jù)
		AddrListInfo(head,data); //添加鏈表節(jié)點
	}
	fclose(file);
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136692
  • 編程
    +關注

    關注

    88

    文章

    3614

    瀏覽量

    93686
  • 文件操作
    +關注

    關注

    0

    文章

    7

    瀏覽量

    5342
收藏 人收藏

    評論

    相關推薦

    UG練習題

    UG練習題,學校老師給的還不錯
    發(fā)表于 07-18 21:10

    C語言典型練習題及答案

    C語言典型練習題及答案 c語言初學者必備
    發(fā)表于 08-10 12:34

    multisim練習題

    大家有沒有multisim的練習題目和教程啊?想學這方面的知識,還望各位大神幫幫忙!小弟實在感激不盡!有的話麻煩發(fā)到我的郵箱1400769604@qq.com謝謝了。
    發(fā)表于 10-13 00:51

    電容器練習題

    電容器練習題
    發(fā)表于 11-16 11:36 ?50次下載

    Verilog HDL練習題

    Verilog HDL練習題
    發(fā)表于 11-03 16:47 ?193次下載

    labview論壇-labview經(jīng)典基礎練習題+解答

    labview論壇-labview經(jīng)典基礎練習題+解答
    發(fā)表于 09-12 10:31 ?648次下載

    C語言基礎習題

    c語言練習題。。。。。。。。。。。。。。。。。。。。。
    發(fā)表于 11-12 15:02 ?0次下載

    高頻諧振練習題

    高頻諧振練習題,有需要的可以下載看看,學習一下!
    發(fā)表于 12-18 11:06 ?1次下載

    子網(wǎng)劃分練習題

    子網(wǎng)劃分練習題,老師自己出的題。
    發(fā)表于 06-17 17:40 ?0次下載

    C語言編程的經(jīng)典練習題資料免費下載

    本文檔的主要內(nèi)容詳細介紹的是C語言編程的經(jīng)典練習題資料免費下載。
    發(fā)表于 06-04 08:00 ?16次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>編程的經(jīng)典<b class='flag-5'>練習題</b>資料免費下載

    C語言程序設計上機考試練習題和答案免費下載

    本文檔的主要內(nèi)容詳細介紹的是C語言程序設計上機考試練習題和答案免費下載
    發(fā)表于 10-28 08:00 ?15次下載

    Python的練習題實例免費下載

    本文檔的主要內(nèi)容詳細介紹的是Python的練習題實例免費下載。
    發(fā)表于 01-15 08:58 ?17次下載

    復變函數(shù)與積分變換練習題及解答

    復變函數(shù)與積分變換練習題及解答
    發(fā)表于 06-27 09:19 ?5次下載

    Java編程思想練習題源碼

    Java編程思想練習題源碼,配合《Java編程思想》進行學習。
    發(fā)表于 09-26 14:24 ?0次下載

    Thinking In Java練習題源碼

    Thinking In Java 練習題源碼文件分享
    發(fā)表于 09-26 14:23 ?0次下載
    主站蜘蛛池模板: 国产精品69人妻无码久久| 欧美日韩亚洲一区视频二区| 高H高肉强J短篇NP| 91欧美秘密入口| 国产精品高清m3u8在线播放| 99久久无码一区人妻A片蜜| 一道精品视频一区二区| 日本强好片久久久久久AAA| 媚药调教被撑到合不拢h| 国产午夜精品理论片免费观看| JAPANRCEP老熟妇乱子伦视频| 天津相声广播在线收听| 亚洲免费综合色视频| 91精品国产91| 国产不卡视频在线观看| 久久成人无码国产免费播放| 女人色极品影院| 午夜A级理论片左线播放| 少妇性饥渴BBBBBBBBB| 亚洲欧洲日本天天堂在线观看| 伊人网综合网| 国产高清在线a视频大全| 久久久高清国产999尤物| 色狼亚洲色图| 浴室里强摁做开腿呻吟的漫画| jizzjizz3d动漫| 久久99re热在线观看视频| 日韩插啊免费视频在线观看| 在线精品一卡乱码免费| 国产传媒18精品免费观看| 男总裁憋尿PLAY灌尿BL| 亚洲精品乱码一区二区三区 | 伊人青青操| 大香伊蕉在人线国产97| 久久99精品国产自在自线| 宿舍BL 纯肉各种PLAY H| 97视频免费在线观看| 久久久久国产精品嫩草影院 | 国产精品人妻无码久久久2022 | 久久精品免费观看久久| 亚洲va精品中文字幕|