わかりましたので、これはおそらく簡単な解決策ですが、少し検索してテストした後、私は混乱したままです.. :(
ここに私が書いたコードのスニペットがあります:
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 の man ページを調べました。いくつかのサンプルコードを見た後、私はこれを思いつきました。単純なテキスト ファイルをコピーして、destinationPath で指定された宛先フォルダーに配置しようとしていました。
テキスト ファイルを配置するフォルダーは testdir と呼ばれ、コピーするファイルは test.txt と呼ばれます。
copyFile 関数で使用しようとした引数は次のとおりです。
- 「test.txt」「テストディレクトリ」
- 「.../Desktop/project/test.txt」「.../Desktop/project/testdir」
- "/Desktop/project/test.txt" "/Desktop/project/testdir"
試行するたびに、「ファイルの取得に問題があります」という印刷ステートメントが表示されます。「testdir」がファイルではなくフォルダーであるためではないかと考えていますが、フォルダーにコピーするにはどうすればよいですか?
これが本当に基本的な質問である場合は申し訳ありませんが、私はちょうど問題を抱えているので、アドバイスは素晴らしいでしょう!
また、さらに役に立ちたい場合は、「copyTheFile」関数は形式に関係なくファイルをコピーすることになっています。.jpg などの場合は、コピーする必要があります。あなたの誰かがそれに問題を見つけたら教えてください。
これは、Linux の ISO/POSIX/C89/C99 にあります。