好的,所以这可能是一个简单的解决方案,但是经过一番搜索和测试后,我仍然感到困惑.. :(
这是我编写的代码片段:
int main(int argc, char *argv[]){
int test;
test = copyTheFile("test.txt", "testdir");
if(test == 1)
printf("something went wrong");
if(test == 0)
printf("copydone");
return 0;
}
int copyTheFile(char *sourcePath, char *destinationPath){
FILE *fin = fopen(sourcePath, "r");
FILE *fout = fopen(destinationPath, "w");
if(fin != NULL && fout != NULL){
char buffer[10000];//change to real size using stat()
size_t read, write;
while((read = fread(buffer, 1, sizeof(buffer), fin)) > 0){
write = fwrite(buffer, 1, read, fout);
if(write != read)
return 1;
}//end of while
}// end of if
else{
printf("Something wrong getting the file\n");
return 0;}
if(fin != NULL)
fclose(fin);
if(fout != NULL)
fclose(fout);
return 0;
}
一些快速说明:我对 C、编程,尤其是文件 I/O 非常陌生。我查阅了 fopen、fread 和 fwrite 的手册页。在查看了一些示例代码后,我想出了这个。我试图只复制一个简单的文本文件,然后将其放在destinationPath 指定的目标文件夹中。
我要放置文本文件的文件夹称为 testdir,我要复制的文件称为 test.txt。
我尝试在 copyFile 函数中使用的参数是:
- “test.txt” “testdir”
- ".../Desktop/project/test.txt" ".../Desktop/project/testdir"
- "/Desktop/project/test.txt" "/Desktop/project/testdir"
每次尝试时,我都会得到打印语句“获取文件有问题”。我在想这可能是因为'testdir'是一个文件夹而不是一个文件,但是我将如何复制到一个文件夹?
抱歉,如果这是一个非常基本的问题,我只是遇到了麻烦,所以任何建议都会很棒!
此外,如果您想提供更多帮助,“copyTheFile”功能应该复制文件而不管格式如何。因此,如果它是 .jpg 或其他东西,它应该复制它。如果你们中的任何人看到它有问题,请告诉我。
这适用于 Linux 上的 ISO/POSIX/C89/C99。