Re: [問題] 想請問各位先進一個開檔的問題
※ 引述《wansincere (阿洵)》之銘言:
: 各位先進午安。
: 我是新手個人自學所以有些觀念可能錯很大
: 以下如果有太離譜的地方還請各位先進不吝指教,謝謝。
: 說明有點長,我的問題在最後。
: 我試著寫一支UNIX下的開檔程式,用C語言寫
: main傳入變數的地方是這樣的:
: (int argc, char *argv[])
: 格式是(程式名 檔案來源 輸出目錄)
: 作用是把來源檔案複製一份到輸出目錄
: 但是實際執行的時候我不可能一個參數一個參數下
: 類似這樣: $:> pname a.txt b.txt c.txt new
: 應該這樣: $:> pname *.txt new
: 因為最後一個參數是輸出的目錄
: 所以我就把最後一個參數提出來:
: int itdir = argc - 1;
: mkdir(argv[itdir]);
: 然後再用for迴圈去抓argc的值:
: for(a=1;a<=argc-2;a++){
: strcat(argv[itdir],argv[a]);
: FILE *file2 = fopen(argv[itdir], "w");
改成這樣:
int itdir=argc-1;
char* tmp;
FILE* input;
FILE* output;
mkdir(argv[itdir]);
for(a=1;a<=argc-2;a++)
{
tmp=malloc(strlen(argv[itdir])+strlen(argv[a])+1); //配置記憶體
strcpy(tmp,argv[itdir]); //複製資料夾名稱
strcat(tmp,"/"); //接上 "/"
strcat(tmp,argv[a]); //把檔名接上去
input=fopen(argv[a],"r"); //開啟輸入檔
output=fopen(tmp,"w"); //開啟輸出檔
.
.
.
//資料複製
fclose(input);
fclose(output);
free(tmp);
}
... 大致上長這樣,有錯誤請指正 XDD
: 這麼做有一個大問題
: 就是傳出的檔名會變這樣: a.txt a.txtb.txt
: 所以我就想從argv[itdir]下手
: 清空重抓不太實際,畢竟內容已經被改變了
: 所以我就想先把他指定給別的變數保留
: 迴圈中再讀出來,但是讀出來之後記憶體位置沒變內容卻改變了
: 如果我的參數是./new/,回來變成_/n\ew/
: 可能不只如此,因為檔案開得亂七八糟
: 試了多次不得要領我決定改變做法:
: size_t length;
: length = strlen(argv[itdir]);
: 先算出目錄參數的長度
: strncpy(argv[itdir],argv[itdir],length);
: 再從迴圈中把他拷貝回原始長度
: 但是我顯然太天真了,strncpy沒發揮任何作用
: 我想說可能是參數一參數二不能相同吧,但是從設一個tmp出來也一樣
: 至此我還在繼續研究
: 但有幾個問題想請問各位先進
: 1.有沒有辦法直接讀取argv的最後一個參數?不確定argv數量的時候有沒有
: 比較正規的作法?
: 2.fopen可以帶入兩個變數嗎?(fopen(argv[itdir]/argv[a], "w");)
: 類似這樣的。
: 3.如果都不行的話,還請各位先進給我一點提示,謝謝(鞠躬)
--
Coding 日誌 & Linux 使用心得
Rinoworks Blog
http://rinoworks.blogspot.com/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.197.32
※ 編輯: Bencrie 來自: 140.121.197.32 (03/10 11:34)
推
03/10 11:43, , 1F
03/10 11:43, 1F
→
03/10 11:45, , 2F
03/10 11:45, 2F
→
03/10 11:47, , 3F
03/10 11:47, 3F
→
03/10 11:48, , 4F
03/10 11:48, 4F
推
03/10 11:52, , 5F
03/10 11:52, 5F
→
03/10 15:55, , 6F
03/10 15:55, 6F
→
03/10 15:56, , 7F
03/10 15:56, 7F
→
03/10 17:06, , 8F
03/10 17:06, 8F
推
03/11 16:17, , 9F
03/11 16:17, 9F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章