當前位置:首頁 » 操作系統 » linuxc文件函數

linuxc文件函數

發布時間: 2024-04-24 12:39:32

c語言函數編寫:文件復制

C語言實現一個簡單的文件復制功能,linux環境下。
思路步驟:(下代碼最重要的邏輯步驟清晰)
第一步:打開源文件(要復制的文件),打開文件的方式以讀的方式就可以了。
Linux C打開文件的庫函數有:int open(const char *pathname,int flags),int open(const char *pathname,mode_t mode),以及 FILE*fopen(const char *path,const char *mode),FILE *fdopen(int fd,const char *mode),這幾個函數,具體的使用方法就查看manual就可以了。
第二步:創建目標文件,所用的函數也是上面那幾個。
第三步:讀取文件。庫函數有:size_t read(int fd,void *buf,size_t count),
size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream)
第三步:寫入目標文件。用的庫函數:size_t write(int fd,void *buf,size_t count),
size_t fwrite(void *ptr,size_t size,size_t nmemb,FILE*stream)
第四步:關閉文件。庫函數:int fclose(FILE*fp) ,int close(int fd)
思路步驟就是這樣子的了。下面是具體的代碼實現。

#include
#include
#include
#include
#include
#include

int main(int argc,char *argv[])
{
int fd_source_file,fd__file;//用接受int open()函數返回的值
//FILE *fp_source_file,*fp__file;//如果用FILE *fopen()函數的話
int size_read,size_write;

char buf[1024];
char _file_name[50];
//檢查參數的輸入
if(argc<3)
{
printf("usage: ./a.out source_file_path _file_path\n");
exit(1);
}

//復制目標文件名
strcpy(_file_name,argv[2]);

//打開源文件
if( (fd_source_file=open(argv[1],O_RDONLY,00744))<0 )
{
perror("open source file error");
exit(1);
}

//創建目標文件
if( (fd__file=open(argv[1],O_CREAT|O_RDWR)) <0 )
{
perror("create file error");
exit(1);
}

do
{
//讀取文件內容
if( (size_read=read(fd_source_file,buf,1024)) <0 )
{
perror("read source file error");
exit(1);
}

//寫入目標文件
if( (size_write=write(fd__file,buf,sieze_read))<0 )
{
perror("wrire file error");
exit(1);
}

}while(size_read==1024)

return 0;
}

Ⅱ linux c用什麼函數創建文件夾

Linux c語言可以使用系統提供的mkdir函數來創建文件夾。

1、函數原型

int mkdir(const char *path, mode_t mode);

2、參數說明:

path是目錄名
mode是目錄許可權

3、需要頭文件

#include<sys/stat.h>

4、示例

//添加mkdir函數聲明頭文件
#include<sys/stat.h>
#include<sys/types.h>
intmain()//主函數
{
//直接調用mkdir函數
//建立一個名為的文件夾
//許可權為0777,即擁有者許可權為讀、寫、執行
//擁有者所在組的許可權為讀、寫、執行
//其它用戶的許可權為讀、寫、執行
mkdir("",0777);
return0;
}

說明:函數調用試圖建立777許可權的文件夾,但是在實際程序執行時,還需要考慮umask值,最終才會得到實際的許可權。

5、執行效果如下圖所示

說明:t.c是源碼文件,有gcc進行編譯,-o是gcc的參數,有於指明編譯後輸出的文件,t為源碼經gcc編譯後生成的可執行文件。./t是執行當前目錄下的生成的可執行文件t。

Ⅲ Linux下編寫c語言頭文件,編譯時出現「函數未定義」

出現該錯誤的原因為編譯時只變編譯了源文件的一部分,故在鏈接時無法從編譯好的目標代碼中找到print函數,所以出錯。


根據你的源文件結構,個人推薦先單獨編譯源文件為多個object文件,再統一鏈接。

方法如下

gcc-cmain.c#-c參數的作用是讓gcc只編譯,不鏈接
gcc-ctest.c
gcc-omainmain.otest.o#將編譯好的目標代碼鏈接

當然,以上是在gcc為編譯器的前提下執行,如使用clang等其他編譯器,方法類似(clang的調用方法與gcc高度兼容)

熱點內容
linux刪除組中的用戶 發布:2025-07-02 11:48:09 瀏覽:366
編程員是什麼 發布:2025-07-02 11:43:03 瀏覽:635
如何更改筆記本電腦密碼方式 發布:2025-07-02 11:34:07 瀏覽:52
安卓平板不知道怎麼選 發布:2025-07-02 11:33:22 瀏覽:16
qq空間怎麼設密碼 發布:2025-07-02 11:30:29 瀏覽:719
跑跑卡丁車如何更改伺服器 發布:2025-07-02 11:27:35 瀏覽:300
我的世界112伺服器存檔 發布:2025-07-02 11:25:02 瀏覽:948
php類函數調用 發布:2025-07-02 11:24:27 瀏覽:26
redhat存儲 發布:2025-07-02 11:12:50 瀏覽:587
優酷不能用流量緩存 發布:2025-07-02 11:10:46 瀏覽:942