chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

Linux開發(fā)_文件目錄操作介紹、創(chuàng)建BMP圖片

DS小龍哥-嵌入式技術(shù) ? 2022-09-17 15:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【摘要】 介紹C語(yǔ)言文件編程,創(chuàng)建BMP圖片,BMP圖片結(jié)構(gòu)介紹,介紹目錄接口編程,Makefile知識(shí)點(diǎn)。

任務(wù)1: 文件操作函數(shù)學(xué)習(xí)

??學(xué)習(xí)兩套函數(shù):

(1)?C語(yǔ)言下標(biāo)準(zhǔn)文件操作函數(shù)。fopen、fclose、fread、fwrite (適合操作普通文件)

針對(duì)文件指針操作。

(2)?Linux下專用的文件操作函數(shù)。open、close、read、write (適合操作設(shè)備文件、也可以操作普通文件)

針對(duì)文件描述符操作。

??如何檢測(cè)文件是否讀取到結(jié)尾? 判斷讀函數(shù)的返回值。

??文件操作相關(guān)的練習(xí)作業(yè)

1.?(編碼)創(chuàng)建一張BMP圖片,顏色可以指定。

2.?模擬du命令,可以查看指定文件的大小,可以將文件大小打印出來。

3.?文件加密和解密。 密碼: 數(shù)字方式、字符串方式

(1)?加密方式: 異或加密

擴(kuò)展: 加密方式: MD5加密

擴(kuò)展作業(yè): 實(shí)現(xiàn)文件的壓縮和解壓,模擬tar命令。

創(chuàng)建BMP圖片:

#include 
#include 

/* 必須在結(jié)構(gòu)體定義之前使用,這是為了讓結(jié)構(gòu)體中各成員按1字節(jié)對(duì)齊 */
#pragma pack(1)

/*需要文件信息頭:14個(gè)字節(jié) */
struct tagBITMAP_FILE_HEADER
{
	unsigned short bfType;   //保存圖片類似。 'BM' -- 0x4d42
	unsigned int  bfSize;      //圖片的大小
	unsigned short bfReserved1;
	unsigned short bfReserved2;
	unsigned int  bfOffBits;  //RGB數(shù)據(jù)偏移地址
};

/* 位圖參數(shù)信息 */
struct tagBITMAP_INFO_HEADER { 
	unsigned long  biSize;      //結(jié)構(gòu)體大小
	unsigned long  biWidth;		//寬度
	unsigned long  biHeight;	//高度
	unsigned short biPlanes;
	unsigned short biBitCount;	//顏色位數(shù)
	unsigned long  biCompression;
	unsigned long  biSizeImage;
	unsigned long  biXPelsPerMeter;
	unsigned long  biYPelsPerMeter;
	unsigned long  biClrUsed;
	unsigned long  biClrImportant;
};

/*
函數(shù)功能: 創(chuàng)建一張BMP圖片
函數(shù)參數(shù):
		char *name 文件名稱
		int w 寬度
		int h 高度
		int c 顏色位數(shù)
函數(shù)返回值: 0表示成功
*/
int CreateBmpImage(char *name,int w,int h,int c)
{
	/*1. 創(chuàng)建文件*/
	FILE *file=fopen(name,"wb");
	if(file==NULL)return 1;
	
	/*2. 創(chuàng)建BMP文件頭*/
	struct tagBITMAP_FILE_HEADER head;
	memset(&head,0,sizeof(struct tagBITMAP_FILE_HEADER));
	head.bfType=0x4d42; //BMP圖片的類型
	head.bfSize=sizeof(struct tagBITMAP_FILE_HEADER)+sizeof(struct tagBITMAP_INFO_HEADER)+w*h*3;
	head.bfOffBits=sizeof(struct tagBITMAP_FILE_HEADER)+sizeof(struct tagBITMAP_INFO_HEADER);
	if(fwrite(&head,1,sizeof(struct tagBITMAP_FILE_HEADER),file)!=sizeof(struct tagBITMAP_FILE_HEADER))
	{
		return 2;
	}
	
	/*3. 創(chuàng)建BMP圖像參數(shù)信息*/
	struct tagBITMAP_INFO_HEADER info;
	memset(&info,0,sizeof(struct tagBITMAP_INFO_HEADER));
	info.biSize=sizeof(struct tagBITMAP_INFO_HEADER);
	info.biWidth=w;
	info.biHeight=h;
	info.biBitCount=24;
	info.biPlanes=1;
	if(fwrite(&info,1,sizeof(struct tagBITMAP_INFO_HEADER),file)!=sizeof(struct tagBITMAP_INFO_HEADER))
	{
		return 3;
	}
	
	/*4. 圖片顏色數(shù)據(jù)填充*/
	int i,j;
	for(i=0;i;i++)>

BMP圖片練習(xí)文件操作(專題練習(xí)):

1.?BMP圖片數(shù)據(jù)取模,模擬圖片取模軟件。(選擇16位或者24位取模方式)

2.?BMP圖片放大縮小,根據(jù)輸入的尺寸放大縮小圖片。

3.?實(shí)現(xiàn)圖片4種翻轉(zhuǎn)效果: 上、下、左、右。

文件系統(tǒng):

1.?文件系統(tǒng)本身就是一套上層(軟件層)算法,底層有與硬件交互的接口。

硬件: 磁盤、U盤、SD卡 (扇區(qū))…….

2.?文件本身屬于一個(gè)容器,沒有規(guī)定存放什么類型的數(shù)據(jù)。

3.?文件指針(光標(biāo)位置),會(huì)隨著讀寫函數(shù)移動(dòng)。

4.?文件讀寫權(quán)限: 打開文件需要選擇正確的權(quán)限。

??文件格式介紹:

圖片: BMP、PNG、JPG/JPEG、GIF、ICO

音頻/視頻: MP3、MP4

文本: txt(字符串)

文檔: doc

??Main函數(shù)傳遞參數(shù)

#include

int main(int argc,char **argv)

{

//argc :表示參數(shù)的數(shù)量

//argv :二維指針,指向傳入的每一個(gè)字符串首地址

int i;

for(i=0;i;i++)<>

{

printf("argv[%d]=%s\n",i,argv[i]);

}

return 0;

}

目錄過濾:

#include 
#include 
#include 
#include 
#include 

// ./app  <.mp3>

/*
函數(shù)功能: 輸出指定目錄下指定指定后綴的文件名稱+路徑
./app /bmp/jpg/ .mp3
*/
int PrintDirName(char *DirName,char *str)
{
	/*1. 打開目錄*/
	DIR *dirp=opendir(DirName);
	if(dirp==NULL)return 1;
	
	/*2. 循環(huán)讀取目錄*/
	struct dirent *file_p=NULL;
	char *findstr=NULL;
	char *addr_p=NULL; //存放最終完整的文件名稱
	while(file_p=readdir(dirp))
	{
		char *findstr=strstr(file_p->d_name,str);
		if(findstr)//123.mp3  123.mp3.mp4 123.mp3.txt
		{
			//比較后綴
			if(strcmp(findstr,str)==0)
			{
				addr_p=malloc(strlen(DirName)+strlen(file_p->d_name)+1);
				strcpy(addr_p,DirName); //拼接目錄
				strcat(addr_p,file_p->d_name);//拼接文件名稱
				printf("文件完整路徑=%s\n",addr_p);
				free(addr_p); //釋放空間
			}
		}
	}
	/*3. 關(guān)閉目錄*/
	closedir(dirp);
	return 0;
}

int main(int argc,char **argv)
{
	if(argc!=3)
	{
		printf("./app  <.mp3>\n");
		return 0;
	}
	
	PrintDirName(argv[1],argv[2]);
	return 0;
}

任務(wù)2: 目錄相關(guān)操作函數(shù)

創(chuàng)建目錄、打開目錄、讀取目錄。

??需求: 獲取指定目錄下指定后綴的所有文件,并且輸出每個(gè)文件的路徑信息。

作業(yè): 拷貝目錄下所有文件(指定后綴的文件)到指定目錄下,考慮一層目錄。

擴(kuò)展: 遞歸拷貝,考慮多層目錄。

任務(wù)3: Makefile文件

poYBAGMlO8uAcYqWAAB494mxKhU924.png

作業(yè):

1.?使用Makefile建立工程,只需要寫一個(gè)Makefile文件。

2.?使用Makefile建立工程,每個(gè)目錄下就寫一個(gè)Makefile文件。

app:print.o main.o sum.o
	gcc main.o print.o sum.o -o app
print.o:print.c
	gcc print.c -c
main.o:main.c
	gcc main.c -c
sum.o:sum.c
	gcc sum.c -c
clean:
	rm app *.o -f
;i++)>
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11621

    瀏覽量

    217808
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    183

    文章

    7642

    瀏覽量

    144513
  • BMP
    BMP
    +關(guān)注

    關(guān)注

    0

    文章

    48

    瀏覽量

    17689
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux新手通關(guān)!5分鐘掌握文件/目錄管理,告別“找不到北”

    文件夾時(shí)明明點(diǎn)了操作,打開卻空無(wú)一物…?其實(shí)?Linux?的文件?/?目錄管理有?“固定套路”,學(xué)會(huì)?8?個(gè)核心命令,再記住?3?個(gè)避坑技巧
    的頭像 發(fā)表于 11-17 10:42 ?148次閱讀
    <b class='flag-5'>Linux</b>新手通關(guān)!5分鐘掌握<b class='flag-5'>文件</b>/<b class='flag-5'>目錄</b>管理,告別“找不到北”

    飛凌嵌入式ElfBoard-Linux系統(tǒng)基礎(chǔ)入門-文件操作相關(guān)shell命令

    2.5 文件操作相關(guān)命令2.5.1 touch創(chuàng)建文件命令:touch英文全拼:功能:創(chuàng)建大小為0的一個(gè)空
    發(fā)表于 09-30 09:46

    Linux系統(tǒng)目錄結(jié)構(gòu)全面剖析

    Linux文件系統(tǒng)采用層次化的目錄結(jié)構(gòu),這種設(shè)計(jì)遵循了Unix哲學(xué)中的"一切皆文件"原則。理解Linux
    的頭像 發(fā)表于 07-21 17:33 ?567次閱讀

    迅為RK3568開發(fā)板Dev-Eco studio 的界面布局-導(dǎo)航欄-工程目錄區(qū)

    。 7.1 導(dǎo)航欄 導(dǎo)航欄如下圖所示 下面對(duì)一些重要的菜單項(xiàng)進(jìn)行介紹 File 包含了工程的創(chuàng)建,打開和關(guān)閉,IDE 整體的配置項(xiàng)設(shè)置,簽名相關(guān)配置 Gradle 的同步操作等。 Build 工程構(gòu)建
    發(fā)表于 06-18 10:30

    鴻蒙開發(fā)實(shí)現(xiàn)圖片上傳(上傳用戶頭像)

    應(yīng)用場(chǎng)景: 選擇圖片 1.1. 添加圖片到相冊(cè)中 默認(rèn)的相冊(cè)中無(wú)法添加圖片:windows 模擬器可以通過截圖來添加圖片 1.2. 選擇相冊(cè)圖片
    發(fā)表于 05-24 23:09

    迅為RK3562開發(fā)板旋轉(zhuǎn)Uboot logo和內(nèi)核logo

    在終端內(nèi)核目錄下輸入以下命令,以 root 權(quán)限打開文件夾,如圖所示: nautilus . 直接旋轉(zhuǎn) logo 圖片即可,進(jìn)入源碼 kernel 目錄下,旋轉(zhuǎn)
    發(fā)表于 05-20 15:51

    Linux常用命令大全

    Linux常用命令是指在Linux操作系統(tǒng)中廣泛使用的命令工具,這些命令工具可以完成各種不同的任務(wù),如管理文件目錄
    的頭像 發(fā)表于 05-03 18:08 ?1598次閱讀

    Linux文件系統(tǒng)打包及鏡像制作,觸覺智能RK3562開發(fā)板演示

    本文介紹Linux開發(fā)文件系統(tǒng)打包及鏡像制作的方法,演示Linux文件系統(tǒng)打包及鏡像制作,適用
    的頭像 發(fā)表于 04-28 16:45 ?748次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>文件</b>系統(tǒng)打包及鏡像制作,觸覺智能RK3562<b class='flag-5'>開發(fā)</b>板演示

    迅為RK3588開發(fā)板Buildroot系統(tǒng)設(shè)置屏幕旋轉(zhuǎn)旋轉(zhuǎn)Uboot logo和內(nèi)核 logo

    在終端內(nèi)核目錄下輸入以下命令,以 root 權(quán)限打開文件夾,如圖所示: nautilus . 直接旋轉(zhuǎn) logo 圖片即可,進(jìn)入源碼 kernel 目錄下,旋轉(zhuǎn)
    發(fā)表于 03-27 16:53

    從零開始馴服Linux(一):ZYNQ-Linux啟動(dòng)文件構(gòu)建全解析

    使用的u-boot源碼路徑為:開發(fā)板資料盤(A 盤)\4_SourceCode\3_Embedded_Linux\資源文件\出廠鏡像相關(guān),在該目錄下有一個(gè)名為
    發(fā)表于 03-20 16:48

    在DDC4100根目錄的:rollbackBackupDirectoryCWindowsSystem32里找到了.ocx文件,說明書里寫的DLL的在哪?

    Guide(DLPU039) 使用DDC4100.exe運(yùn)行成功,DMD dlp7000 能顯示圖片。 問題: 1、在DDC4100根目錄
    發(fā)表于 02-25 07:57

    AI Cube進(jìn)行yolov8n模型訓(xùn)練,創(chuàng)建項(xiàng)目目標(biāo)檢測(cè)時(shí)顯示數(shù)據(jù)集目錄下存在除標(biāo)注和圖片外的其他目錄如何處理?

    AI Cube進(jìn)行yolov8n模型訓(xùn)練 創(chuàng)建項(xiàng)目目標(biāo)檢測(cè)時(shí)顯示數(shù)據(jù)集目錄下存在除標(biāo)注和圖片外的其他目錄怎么解決
    發(fā)表于 02-08 06:21

    《DNESP32S3使用指南-IDF版_V1.6》第四十章 圖片顯示實(shí)驗(yàn)

    第四十章圖片顯示實(shí)驗(yàn) 在開發(fā)產(chǎn)品的時(shí)候,很多時(shí)候,我們都會(huì)用到圖片解碼,在本章中,我們將向大家介紹如何通過ESP32-S3來解碼BMP/JP
    發(fā)表于 01-04 09:22

    Linux中的用戶與創(chuàng)建

    Linux中的用戶與創(chuàng)建 用戶的類型 超級(jí)管理用戶: 權(quán)限最高的用戶(uid:0) #uid:是用戶的身份證號(hào),Linux系統(tǒng)只認(rèn)uid 普通用戶: 權(quán)限受限的用戶(uid:1000-60000
    的頭像 發(fā)表于 12-20 14:24 ?1169次閱讀
    <b class='flag-5'>Linux</b>中的用戶與<b class='flag-5'>創(chuàng)建</b>

    SSM開發(fā)環(huán)境的搭建教程 SSM與Spring Boot的區(qū)別

    項(xiàng)目。 配置項(xiàng)目的基本信息,如項(xiàng)目名稱、工作空間、分組Id等。 完善項(xiàng)目結(jié)構(gòu) : 在項(xiàng)目的 src/main/webapp 目錄創(chuàng)建 WEB-INF 文件夾,并在其中創(chuàng)建 web.x
    的頭像 發(fā)表于 12-16 18:13 ?1798次閱讀