linuxc語言文件復制文件
⑴ 【linux C編程】編寫程序p2,當執行命令「p2 file1 file2」,實現復制文件file1成file2
#include <stdio.h>
int main (int argc, char* argv[])
{
if ( argc != 3 )
{
printf ("Wrong arguments.\nUsage: argv[0] srcfile desfile\n");
return 1;
}
system ("cp argv[1] argv[2]");
return 0;
}
⑵ 如何在linux下用c編程實現文件的復制
#include<stdio.h> #include<unistd.h> #include<sys/stat.h> #include<sys/types.h> #include<fcntl.h>
int main(int argc,char **argv) { if(argc<3)//參數少於3,給出提示並退出 {
printf("請按如下格式運行!\n"); printf("./a.out [原始圖片] [目標圖片]\n");
return 0;
}
int fd1 = open(argv[1],O_RDONLY);//只讀方式打開源文件 if(-1 == fd1) { perror("打開文件失敗");
return 0;
} int fd2 = open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0666);//讀寫方式打開文件,有則清空,沒有則創建 char buf[100]={0}; int res;
while(res = read(fd1,buf,sizeof(buf)))//從源文件讀出 {
write(fd2,buf,res);//寫入到目標文件
}
close(fd1);//關閉文件 close(fd2); return 0;
}
⑶ 如何在linux下用c編程實現文件的復制
打開一個讀文件和一個寫文件,用一個循環,fgetc每讀一個字元,就用fputc寫入另一個文件,這樣就實現了文件的復制,和普通的c語言標准庫編程是一樣的,代碼如下:
int c;
FILE *in, *out;
in = fopen("file.in", "r");
out = fopen("file.out", "w");
while( ( c = fgetc(in) ) != EOF)
fputc(c, out);
fclose(in);
fclose(out);
⑷ 怎麼用C語言復制文件或者移動文件,不要用system的命令。Linux命令cp cat都不行,我要
要求 c:\source.txt文件必須存在,可以自己建立一個這樣的文本文件,並輸入一些數據,以便測試。
復制文件:源文件c:\source.txt 復制到c:\dex.txt
#include<stdio.h>
void main()
{
FILE *fp1,*fp2;
char str1;
fp2=fopen("c:\\des.txt","w");
if((fp1=fopen("C:\\source.txt","r"))==NULL)
{
printf("file cannot be opened\n");
return;
}
while((str1=fgetc(fp1))!=EOF)
fputc(str1,fp2);
fclose(fp1);
fclose(fp2);
}
希望能夠幫到你。
移動文件:源文件c:\source.txt 移動到c:\dex.txt
#include<stdio.h>
void main()
{
FILE *fp1,*fp2;
char str1;
fp2=fopen("c:\\des.txt","w");
if((fp1=fopen("C:\\source.txt","r"))==NULL)
{
printf("file cannot be opened\n");
return;
}
while((str1=fgetc(fp1))!=EOF)
fputc(str1,fp2);
fclose(fp1);
fclose(fp2);
remove("c:\\source.txt");
}
⑸ linux下用c語言寫出復制黏貼文件
c語言調用cp命令和參與
systeam "cp -- h";
不過我覺得用shell腳本來工作效率好點兒
⑹ 求linux下復制文件到其他目錄的c語言庫函數
如果必須用函數實現的話,基本思路如下:
1. fopen已知文件,把內容讀到buffer(char [])中去(fread), fclose當前文件
2. fopen新文件(用新名字)在目錄1中,把buffer內容寫入新文件(fwrite),fclose之
3. 重復第2步,只是換成目錄2
注意,也可用open/read/write,但fopen/fread/fwrite是更常用更符合C標准庫更容易移植的版本。
⑺ linux下用簡單c語言代碼怎麼實現實現文件夾所有內容的復制
#include<unistd.h>
intmain(intargc,charconst*argv[])
{
system("cp-r目標目錄目的目錄");//把目標目錄和目的目錄改成實際目錄即可
return0;
}
直接調用shell命令即可
⑻ linux下c語言多線程拷貝文件出現問題,有時候會拷貝成功,有時候會失敗,求原因
如果針對問的問題來說,可以考慮使用同步機制.可以查如mutex等同步機制.另外,我會建議你應該使用單一個服務程序,用緩存空間去接收要列印的訊息,單一控制輸出螢幕,這樣應該會比較好.因為螢幕輸出只有一個,多線直接控制,本來就不好處理.如果採用傳送訊息機制,應該就有順序分別,不易產生問題.
⑼ linux c++ 拷貝文件問題
#include <stdlib.h>
#include <string.h>
#include <io.h>
#include <stdio.h>
#include <iostream>
#include <windows.h>
/*********************************************************************
功能:復制文件
參數:pSrc,原文件名
pDes,目標文件名
返回:<0,失敗
>0,成功
作者:
*********************************************************************/
#define BUF_SIZE 256
int File(const char * pSrc,const char *pDes)
{
FILE *in_file, *out_file;
char data[BUF_SIZE];
size_t bytes_in, bytes_out;
long len = 0;
if ( (in_file = fopen(pSrc, "rb")) == NULL )
{
perror(pSrc);
return -2;
}
if ( (out_file = fopen(pDes, "wb")) == NULL )
{
perror(pDes);
return -3;
}
while ( (bytes_in = fread(data, 1, BUF_SIZE, in_file)) > 0 )
{
bytes_out = fwrite(data, 1, bytes_in, out_file);
if ( bytes_in != bytes_out )
{
perror("Fatal write error.\n");
return -4;
}
len += bytes_out;
printf("ing file .... %d bytes \n", len);
}
fclose(in_file);
fclose(out_file);
return 1;
}
/*********************************************************************
功能:復制(非空)目錄
參數:pSrc,原目錄名
pDes,目標目錄名
返回:<0,失敗
>0,成功
作者:
*********************************************************************/
int Dir(const char * pSrc,const char *pDes)
{
if (NULL == pSrc || NULL == pDes) return -1;
mkdir(pDes);
char dir[MAX_PATH] = {0};
char srcFileName[MAX_PATH] = {0};
char desFileName[MAX_PATH] = {0};
char *str = "\\*.*";
strcpy(dir,pSrc);
strcat(dir,str);
//首先查找dir中符合要求的文件
long hFile;
_finddata_t fileinfo;
if ((hFile = _findfirst(dir,&fileinfo)) != -1)
{
do
{
strcpy(srcFileName,pSrc);
strcat(srcFileName,"\\");
strcat(srcFileName,fileinfo.name);
strcpy(desFileName,pDes);
strcat(desFileName,"\\");
strcat(desFileName,fileinfo.name);
//檢查是不是目錄
//如果不是目錄,則進行處理文件夾下面的文件
if (!(fileinfo.attrib & _A_SUBDIR))
{
File(srcFileName,desFileName);
}
else//處理目錄,遞歸調用
{
if ( strcmp(fileinfo.name, "." ) != 0 && strcmp(fileinfo.name, ".." ) != 0 )
{
Dir(srcFileName,desFileName);
}
}
} while (_findnext(hFile,&fileinfo) == 0);
_findclose(hFile);
return 1;
}
return -3;
}