當前位置:首頁 » 編程語言 » c語言復制文件函數

c語言復制文件函數

發布時間: 2022-12-10 10:51:48

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;
}

⑵ C語言中如何編寫一個字元串復制函數,並在主函數中調用它。

#include<stdio.h>

char *custom_cpy(char *to,char *from);

int main(int argc,char *argv[]){

char *from = "i like c langanger";

char to[30];

char *ptr = custom_cpy(to,from);

printf("%s,%s ",ptr,to);

return 0;

}

char *custom_cpy(char *to,char *from){

if(to == NULL || from == NULL){

return NULL;

}

char *p = to;

for(;*from!='';from++,to++){

*to = *from;

}

*to = '';//拷貝完畢之後一定要加一個結束符號

return p;

}

(2)c語言復制文件函數擴展閱讀:

字元串相關函數應用:

1. 連接運算 concat(s1,s2,s3…sn) 相當於s1+s2+s3+…+sn。

例:concat(『11』,'aa』)='11aa』;

2. 求子串。 Copy(s,I,I) 從字元串s中截取第I個字元開始後的長度為l的子串。

例:(『abdag』,2,3)=』bda』;

3. 刪除子串。過程 Delete(s,I,l) 從字元串s中刪除第I個字元開始後的長度為l的子串。

例:s:=』abcde』;delete(s,2,3);結果s:=』ae』;

4. 插入子串。 過程Insert(s1,s2,I) 把s1插入到s2的第I個位置

例:s:=abc;insert(『12』,s,2);結果s:=』a12bc』;

5. 求字元串長度 length(s) 例:length(『12abc』)=5;

網路-字元串

⑶ C語言,使用函數實現字元串復制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

#include <stdio.h>
#include <time.h>

/*把從src地址開始的字元串復制到以dest開始的字元串中*/
char* str (char* dest, char *src) {
char* r = dest;
while((*r++ = *src++)!='\0');
return dest;
}

int main () {
char *str1="abcde";
char *str2;

str2 = str (str2, str1); /*把str1復制到str2*/

puts (str2);

return 0;
}

⑷ c語言中strcpy函數干什麼用的

他是字元串的復制,函數strcpy(字元數組1,字元串2)作用就是 將字元串2復制到字元數組1 中去。

例如 char str1[10]='',

str2[]={「china」}

strcpy(str1,str2);

這樣str1[]數組的內容就是「china」。

(4)c語言復制文件函數擴展閱讀:

C語言庫函數,常用庫函數有:

1、scanf格式輸入函數

2、printf格式輸出函數

3、systemdos命令函數

4、sort排序

5、main主函數

6、fgets文件讀取字元串函數

7、fputs文件寫入字元串函數

8、fscanf文件格式讀取函數

9、fprintf文件格式寫入函數

10、fopen打開文件函數

11、getchar輸入字元函數

12、putchar輸出字元函數

13、malloc動態申請內存函數

⑸ c語言strcpy()用法

1、strcpy函數是復制字元串的,接受兩個參數,一個是被復制字元串,另一個新字元串。具體的用法,首先打開編輯器新建一個c語言的程序文件,寫入頭文件和主函數:

⑹ C語言---如何復制任意文件

C語言復制文件主要由三種辦法,你可以根據自己的知識選用一個

方法1)利用C語言的二進制讀寫函數
自己用fopen打開源文件和目標文件,然後用循環讀寫實現復制

方法2)利用操作系統的文件復制函數
例如Windows就有如下API函數可以復制文件
BOOL CopyFile(
LPCTSTR lpExistingFileName, // name of an existing file
LPCTSTR lpNewFileName, // name of new file
BOOL bFailIfExists // operation if file exists
);
第一個參數是用來存放當前要處理文件的路徑。
第二個參數是用來存放用戶指定的新路徑。
第三個參數它是用來判斷用戶指定的新路徑是否已經存在要存放的路徑,如果為TRUE,則新路徑中已經存在該文件了,該函數調用失敗,否則就調用成功。

方法3:C語言調用操作系統的命令
首先#include<stdlib.h>

然後 程序中 調用 system(「這里寫 的完整命令」);

⑺ 在C語言中使用函數system(" y.exe c:\\")

是這樣的:
system函數是一個運行DOS命令的函數
system(char
*s)
s就是要運行的命令。

y.exe
c:\
是將當前目錄下的y.exe復制到c:\下
當原文件不存在時出現提示
Invalid
data
說明並沒有原文件也就是沒有y.exe這個文件。

⑻ c語言編程中字元串復制函數編程程序出現錯誤,這是怎麼回事

這里原因是gets函數不安全,visual studio的後續產品已經不再支持此類函數,可以換成fgets(str1, sizeof(str1), stdin);
第一個參數是,字元存儲地址,第二個是最大內存大小,第三個是從哪裡讀取,stdin是從鍵盤,也可以是文件指針表示從文件中讀取。
其實strcpy出現提示也是不安全的,可以考慮使用strncpy函數。

以下是(8)c語言復制文件函數擴展閱讀

C語言gets函數,fgets函數的使用

gets從標准輸入設備讀字元串函數。可以無限讀取,不會判斷上限,以回車結束讀取。函數的具體功能如下所示:從stdin流中讀取字元串,直至接受到換行符或EOF時停止,並將讀取的結果存放在buffer指針所指向的字元數組中。換行符不作為讀取串的內容,讀取的換行符被轉換為『\0』空字元,並由此來結束字元串。

使用gets函數的時候應注意以下要素:可以無限讀取,不會判斷上限,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。如果溢出,多出來的字元將被寫入到堆棧中,破壞一個或多個不相關變數的值。
這個事實導致gets函數只適用於玩具程序,為了避免這種情況,我們可以用fgets(stdin) 讀取標准輸入來替換gets()。為了向後兼容,gets刪除換行符,gets並不將換行符存入緩沖區。

fgets函數用來從文件中讀入字元串。fgets函數的調用形式如下:fgets(str,n,fp);此處,fp是文件指針;str是存放在字元串的起始地址;n是一個int類型變數。函數的功能是從fp所指文件中讀入n-1個字元放入str為起始地址的空間內;如果在未讀滿n-1個字元之時,已讀到一個換行符或一個EOF(文件結束標志),則結束本次讀操作,讀入的字元串中最後包含讀到的換行符。因此,確切地說,調用fgets函數時,最多隻能讀入n-1個字元。讀入結束後,系統將自動在最後加'\0',並以str作為函數值返回。原型是char *fgets(char *s, int n, FILE *stream);

同時注意scanf函數和gets函數混用時的注意事項:

1、gets在scanf前調用,這種調用一般不會出現什麼問題,可以正常輸入。

2、scanf在gets前調用,這種情況就會出現問題,當輸入完scanf中的變數時,運行到gets函數,則不讓輸入任何字元,出現此問題的原因是gets函數接收了scanf輸入完後的回車符,解決的辦法是在scanf和gets中間,用getchar函數接收掉回車符,這樣就不會出現任何問題了。

⑼ 用C語言編寫一個函數,實現文件復制的功能步驟是什麼

這樣寫就行了:
#include<stdio.h>
void main()
{
char pBuffer[8];
FILE *f1, *f2;
f1 = fopen("file1", "rb"); // 以二進制形式讀,file1是文件名
f2 = fopen("file2", "wb"); // 以二進制形式寫,file2是文件名
while (!feof(f1))
{
fread(pBuffer, 1, 8, f1); // 每次讀8個位元組
fwrite(pBuffer, 1, 8, f2); // 每次寫8個位元組
}
fclose(f1);
fclose(f2);
}

熱點內容
怎樣建立演算法 發布:2025-01-21 12:12:14 瀏覽:838
凸包的graham演算法 發布:2025-01-21 12:00:00 瀏覽:146
jsonobject轉java對象 發布:2025-01-21 12:00:00 瀏覽:306
macpython3默認 發布:2025-01-21 11:58:26 瀏覽:261
芒果伺服器是什麼意思 發布:2025-01-21 11:57:54 瀏覽:40
微信聊天伺服器錯誤什麼意思 發布:2025-01-21 11:56:13 瀏覽:460
linuxtomcat不能訪問 發布:2025-01-21 11:47:11 瀏覽:394
刷新器需要什麼配置 發布:2025-01-21 11:09:28 瀏覽:972
jedis源碼 發布:2025-01-21 11:08:24 瀏覽:890
edm資料庫 發布:2025-01-21 11:05:54 瀏覽:371