我有一個文本文件,名稱爲約800個文件,我想從一個文件夾傳輸到另一個文件夾。基本上,文本文件看起來像這樣:如何在UNIX下使用(C)將文件從一個文件夾傳輸到另一個文件夾?
file1.aaa (End of line)
file2.aaa
..
etc
我做了這個代碼,使用功能「重命名」,每個人都在互聯網上建議:
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (void)
{
FILE *file = fopen ("C:\\Users\\blabla\\ListOfFiles.txt", "r");
char path1[100] = "C:\\blabla\\folder1\\";
char path2[100] = "C:\\blabla\\folder2\\";
char *s1;
char *s2;
char line [20]; /* the file names won't be any longer than that */
while(fgets(line, sizeof line,file) != NULL)
{
char *filePath1 = (char *) malloc((strlen(path1) + strlen(line) + 1) * sizeof(char));
char *filePath2 = (char *) malloc((strlen(path2) + strlen(line) + 1) * sizeof(char));
filePath1 = strcpy(filePath1, path1);
filePath2 = strcpy(filePath2, path2);
strcat(filePath1,line);
strcat(filePath2,line);
if (rename(filePath1, filePath2) != 0)
{
perror("wrong renaming");
getchar();
}
free(filePath1);
free(filePath2);
}
fclose (file);
return 0;
}
現在,當我打印的文件路徑,我得到預期的結果,但程序在運行'rename'函數時會停止運行,因爲參數問題無效。 我看着http://www.cplusplus.com/,注意到它說rename()的參數應該是const char *,難道這是問題的來源嗎?但是如果是這樣,我不明白我怎樣才能將我的參數變成'const',因爲我在閱讀我的初始文本文件時需要更新它們。
你解決了一個普遍問題,還是你真的只想複製一組文件?您的操作系統將擁有*遠遠優越的*工具。 –
是否想編寫C或C++代碼? – TWE
使用您的操作系統的外殼。你將在十分鐘內完成這項工作。這應該有所幫助:[使用FOR命令複製文本文件中列出的文件](http://www.sidesofmarch.com/index.php/archive/2004/03/30/using-the-for-command-to -copy-files-listed-in-a-text-file /) – Krumia