本文目錄一覽:
- 1、單片機中的dir是什麼意思
- 2、Linux下C語言編程,跟目錄操作相關的有個DIR數據結構,是個結構體的,具體是怎麼定義的。求解惑
- 3、<a href='#C語言中的include中的相關函數和作用’ title=’C語言中的include中的相關函數和作用’>C語言中的include中的相關函數和作用
- 4、怎樣使用C語言列出某個目錄下的文件?
- 5、如何用c語言實現DIR 並轉向到一個文件,再打開文件讀出一個一個文件名。並寫入文本文件?
- 6、c語言 中DIR類型
單片機中的dir是什麼意思
單片機語句中的dir意思是設置單片機端口方向的而已。
如果程序是要實現呼吸燈功能,那麼位變量DIR則應該是用來表示方向(DIRection)的變量,比如DIR=1時表示呼,DIR=0時表示吸,具體還得程序完整貼出來才能確定。
Linux下C語言編程,跟目錄操作相關的有個DIR數據結構,是個結構體的,具體是怎麼定義的。求解惑
APUE中大致是這麼說的:DIR結構是個內部結構,作用類似於FILE結構,讀目錄時我們並不關係DIR結構的細節,它只是作為opendir的返回值,以及readdir、rewinddir、closedir、telldir、seekdir的函數的操作對象,讀目錄是只調用這些函數就行了,就像我們使用FILE結構一樣,很少有人關注FILE的定義。另外,只有內核才能寫目錄。
<h2 id='C語言中的include中的相關函數和作用’>C語言中的include中的相關函數和作用
chdir()改變當前目錄的函數
原形:int chdir(const char *path)
功能:把由path指定的目錄改為當前目錄。path參數中可以指定驅動器號,如「a:\\ddd」, 但只是改變該驅動器上的當前目錄,對當前活動驅動器上的當前目錄無影響。
返回值:0(成功);-1(失敗)
頭文件:dir.h
=======================================================================================
findfirst()函數和findnext()函數
調用方式:整形數=findfirst(文件名,結構變量名,屬性常數組合(如0x26));其中定義struct ffblk 結構變量名;
原形:int findfirst(path,buffer,attr)和int findnext(buffer)
char *path;//要檢索的文件名
struct ffblk
{
char ff_reserved[21];
char ff_attrib;//被檢索的文件屬性
unsigned ff_ftime;//最後修改的時間
//(0-4位:秒數/2;5-10位:分數;11-15位:小時數)
unsigned ff_fdate;//最後修改的日期
//(0-4位:日;5-8位:月;9-15位:年減1980)
long ff_fsize;//文件大小
char ff_name[13];//組名
}*buffer;
int attr;//要檢索的文件屬性
功能:檢索由path和attr指定的文件,把結果返回到buffer。findfirst返回關於第一個指定文件的信息,findnext繼續檢索。
返回值:0(檢索成功),-1(沒有找到指定的文件)
屬性常數:
FA_NORMAL(0x00) 含意:Normal file, no attributes
FA_RDONLY(0x01) 含意:只讀
FA_HIDDEN(0x02) 含意:隱含文件
FA_SYSTEM(0x04) 含意:系統文件
FA_LABEL(0x08) 含意:卷標
FA_DIREC(0x10) 含意:子目錄
FA_ARCH(0x20) 含意:修改的文件Archive
頭文件:dir.h(dos.h)
====================================================================================
fnmerge()建立文件路徑函數
原形:void fnmerge(char *path,const char *drive,const char *dir, const char *name,const char *ext)
功能:合成drive:\dir\name.ext,放在path
頭文件:dir.h
fnsplit()分解完整的路徑名函數
原形:int fnsplit(char *path,const char *drive,const char *dir,const char *name,const char *ext)
功能:把文件名路徑path分成4個部分存放。
其中drive中有冒號;dir中有開始和結尾的反斜杠;ext包括開始圓點
返回值:如果有擴展名,則 返回值EXTENSION!=0
如果有文件名,則 返回值FILENAME!=0
如果有目錄名,則 返回值DIRECTORY!=0
如果有驅動器號,則返回值DIRVE!=0
頭文件:dir.h
====================================================================================
getcurdir()讀取指定驅動器的當前目錄的函數
原形:int getcurdir(int drive,char directory)
drive=0(缺省);1(A驅動器);…
directory用來存放目錄名,不包括驅動器名,不以反斜杠開始。
返回值:0(調用成功);1(出錯)
頭文件:dir.h
getcwd()讀取當前目錄的函數
原形:char *getcwd(char *buf,int buflen)
功能:讀取當前目錄的完整路徑名(包括驅動器名),最長為buflen個位元組,存放在buf中。如果buf為NULL,函數將分配一個buflen位元組長的緩衝區,以後可將本函數的返回值作為free函數的參數來釋放該緩衝區。
返回值:若buf非空,調用成功返回buf,出錯返回NULL;若buf為NULL,返回指向已經分配的內存緩衝區地址。
頭文件:dir.h
getdisk()讀取當前磁盤驅動器號函數
原形:int getdisk(void)
功能:取得當前驅動器號(0=A;1=B;….)
頭文件:dir.h
======================================================================================
mkdir()創建目錄函數
原形:int mkdir(const char *path)
功能:按給定的路徑建立一個新的目錄
頭文件:dir.h
返回值:0(成功);-1(失敗)
mktemp()建立一個唯一的文件名的函數
原形:char *mktemp(char *template)
功能:使用一個唯一的文件名來替換字符串template,並返回template。
頭文件:dir.h
======================================================================================
rmdir()刪除目錄函數
原形:int rmdir(const char *path)
注意:刪除的目錄不能是當前目錄,不是根目錄,是空目錄
返回值:0(成功);-1(操作出錯)
頭文件:dir.h
searchpath()按dos路徑查找一個文件的函數
原形:char *searchpath(const char *file)
用法:p=searchpath(“文件名”); 先定義char *p;
功能:搜索dos路徑(環境變量中的path=….)來定位由file給出的文件。
返回值:指向完整路徑名字符串的指針。定位失敗返回NULL。
頭文件:dir.h
segread()讀段寄存器函數
原形:void segread(struct SREGS *segp)
作用:把當前寄存器的值保存到SREGS型機構變量segp中。
segs.cs=代碼段寄存器的值;
segs.ds=數據段寄存器的值;
segs.es=附加段寄存器的值;
segs.ss=堆棧段寄存器的值;
setdisk()設置當前驅動器的函數
原形:int setdisk(int drive)
功能:把由drive指定的驅動器修改成當前驅動器,返回可使用的驅動器數。
頭文件:dir.h
settextstyle()顯示字符的當前設置函數
功能:設置當前輸出英文字符的字體、大小和方向。
調用方式:
void far settextstyle(int font,int direction,int charsize)
其中①參數font確定所選定的字體形狀,
DEFAULT_FONT 或0 是8×8位圖字體
TRIPLEX_FONT 或1 是三重矢量字體
SMALL_FONT 或2 是小號矢量字體
SANS_SERIF_FONT或3 是無襯線矢量字體
GOTHIC_FONT 或4 是哥特矢量字體
②參數durection字符的顯示方向,
HORIZ_DIR 或0 是水平方向
VERT_DIR 或1 是垂直方向
③參數charsize表示字符放大的倍數,其值為0到10。
setvect()設置中斷向量函數
setvect(int 中斷號,void interrupt(*中斷函數名))
功能:把中斷服務程序的地址裝入中斷向量表中。
調用方法:setvect(中斷號,中斷函數名即地址);
(1)得預先定義要代替原函數的新函數
void interrupt 中斷函數名(void)
{……}
(2)得先保留原中斷函數地址
void interrupt (*保留函數名)(void);
保留函數名=getvect(中斷號);
(3)事後得將原中斷函數地址裝迴向量表中
setvect(中斷號,保留函數名);
setviewport()建立視口的函數
原形: void far setviewport(int left,int top,int right,int bottom,int clip)
功能:用左上角坐標left,top和右下角坐標right,bottom建立一個視口,如果clip為1,則超出視口的輸出自動被剪裁掉;如果clip為0,則不被剪裁。
例:setviewport(0,0,100,100,1)建立對角線為0,0和100,100的視口,並帶有剪裁功能。
註:要清除當前視口,用函數clearnviewport()。
怎樣使用C語言列出某個目錄下的文件?
用C語言列出目錄下的文件,在linux下可採用readdir()函數來實現,代碼實現過程為:
打開目錄
循環讀目錄,輸出目錄下文件
關閉目錄指針
參考代碼:
#include dirent.h
#include stdio.h
int main()
{
DIR *dirp;
struct dirent *dp;
dirp = opendir(“.”); //打開目錄指針
while ((dp = readdir(dirp)) != NULL) { //通過目錄指針讀目錄
printf(“%s\n”, dp-d_name );
}
(void) closedir(dirp); //關閉目錄
return 0;
}
在windows下,代碼如下:
#include io.h
#include stdio.h
void printDir( const char* path )
{
struct _finddata_t data;
long hnd = _findfirst( path, data ); // 查找文件名與正則表達式chRE的匹配第一個文件
if ( hnd 0 )
{
perror( path );
}
int nRet = (hnd 0 ) ? -1 : 1;
while ( nRet = 0 )
{
if ( data.attrib == _A_SUBDIR ) // 如果是目錄
printf(” [%s]*\n”, data.name );
else
printf(” [%s]\n”, data.name );
nRet = _findnext( hnd, data );
}
_findclose( hnd ); // 關閉當前句柄
}
void main()
{
printDir(“d:/*.*”);
}
相關函數說明:
long _findfirst( char *filespec, struct _finddata_t *fileinfo );
// 功 能 : 提供與filespec指定入口泛式匹配的第一個文件.通常後繼用_findnext()函數來完成某泛式下的文件遍歷.
// 頭文件 : #include io.h
// 參 數 : filespec – 目標文件規範,可以包含通配符
// fileinfo – 文件信息buffer
// 返回值 : 成功返回唯一的搜索句柄
// 出錯返回-1,且設置errno為如下值:
// ENOENT 該泛式無法匹配
// EINVAL 無效文件名
int _findnext( long handle, struct _finddata_t *fileinfo );
// 功 能 : 按照前面_findfirst中的泛式規則,查找下一個符合該泛式的文件,並以此為依據修改fileinfo中的值
// 頭文件 : #include io.h
// 參 數 : long handle – 搜索句柄(通常由緊靠其前的_findfirst()返回)
// fileinfo – 文件信息buffer
// 返回值 : 成功返回0
// 出錯返回-1
int _findclose( long handle );
// 功 能 : 關閉搜尋句柄並釋放相應資源
// 頭文件 : #include io.h
// 參 數 : long handle – 搜索句柄(通常由緊靠其前的_findfirst()返回)
// 返回值 : 成功返回0
// 出錯返回-1
如何用c語言實現DIR 並轉向到一個文件,再打開文件讀出一個一個文件名。並寫入文本文件?
使用system(“dos命令”)操作,如
system(“d: nul”); /* 轉換到d盤 */
system(“cd data nul”); /* 轉換到子目錄data */
system(“dir /o:d d:\\mulu.txt”); /* 將d:\data目錄下的文件名輸出到d盤的mulu.txt文件中 */
c語言 中DIR類型
C語言中的數據類型簡單的分為兩類,一類是內置數據類型,比如int、float
;一類是用戶自定義類型,比如結構體、聯合體、位域等。
默認的數據類型中沒有DIR類型,因此應該是一種用戶自定義類型,可以在源代碼中查找相關的類型定義。
原創文章,作者:BBDR,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/135622.html