我有一個文件,其中包含目錄和子目錄中所有文件的列表路徑和其他相關信息。它的部分內容在最後給出。 我的問題是:使用c中的文件路徑打開文件
我試圖讀取此文件並按如下所示打開列表中的所有文件。他們都沒有成功開幕。
部分代碼: 我用strtok()
切出的文件的信息的其他部分
char *token=NULL;
unsigned long file_size;
char file_fp[33];
char file_path[150];
char fname_buffer[1024];
char file_list[32];
std::cout<<"Enter file name containing the file list\n";
std::cin>>file_list;
FILE *flist=fopen(file_list,"r+b");
if(!flist)
{
std::cout<<"Could not open "<<file_list<<
" for reading\n Please rerun the program and enter the correct file name.";
return(1);
}
else while(fgets(fname_buffer,1024,flist))
{
// if ('\n' != fname_buffer[0])
token = strtok(fname_buffer," ,\t");
file_size=atol(token);
// if ('\n' != fname_buffer[0])
token = strtok(NULL, " ,\t");
strncpy((char*)file_fp,token,32);
// if ('\n' != fname_buffer[0])
token = strtok(NULL, "\n");
strcpy(file_path,token);
FILE *input_file=fopen(file_path, "r+b");
if(input_file == NULL)
{
fprintf(stderr,
"Could not open file %s for reading, error code %d!\n",
token,
errno);
continue;
}
........
局部file_list中的文件內容:
1883408 5291b5e9c117677f34fe39ac72983eba E:\ papers(êÑ)ºSOA+ with + .NET + and + Windows + Azure00018.pdf
474231 a6f96231c62bd457c5f06201553a468f E:\文件\ 06_un_ict_task_force_african_development_status.pdf
298547 4ba159f5b1123a89c118bb5814af13f9 E:\文件\ 10.1.1.119.6128.pdf
1639991 a60672ae9f88c0c1ab2d33bac68572c6 E:\文件\ 20100602_roger_mcilmoyle_sungard.pdf
501015 0d6a4cace5815c82a2627e52bb5ae6e9 E:\論文\雲存儲多樣性案例.pdf
多:
我怎麼才能把這些文件路徑的文件擴展名,以使用它們作爲文件名
編輯: 我得到的錯誤是
錯誤代碼2,文件或目錄找不到
編輯:
這是實際的輸出我得到
輸入文件名包含文件列表fileinfo.txt
無法打開 文件E:\文件(├â├ó┬╖├æ)┬ú┬║SOA+與+ .NET +和+ Windows + Azure00018 .pdf 供閱讀,錯誤代碼22!
無法打開文件 E:\文件\ 06_un_ict_task_force_african_development_status.pdf爲 閱讀,錯誤代碼22!
編輯:使用雙斜槓來代替單斜槓的目錄遍歷
從fopen中得到什麼錯誤?文件名是否正確? – 2012-02-29 11:54:37
@JoachimPileborg:看到編輯 – John 2012-02-29 12:00:16
什麼是在'如果(INPUT_FILE == NULL)'分支顯示在fprintf中'()'語句中的文件的路徑? – hmjd 2012-02-29 12:09:21