看板 LinuxDev 關於我們 聯絡資訊
最近在版子上要從server端下載更新檔來更新 int download_file(char *img[][2],int count){ char cmd[128] = {0}; int i; //strcat(cmd,"wget -O /data/update.xml'"); for( i=0;i<count;i++){ strcat(cmd,"wget "); strcat(cmd,"-O /Data/"); strcat(cmd,img[i][0]); strcat(cmd," "); strcat(cmd,"\""); strcat(cmd,url); strcat(cmd,"?"); strcat(cmd,"&img_name="); strcat(cmd,img[i][0]); strcat(cmd,"&token="); strcat(cmd,token_decrypt); strcat(cmd,"\""); system(cmd) memset(cmd,0,sizeof(cmd)); } 但是發現到下載到的檔案跟原本的檔案大小差很多 而且還會出現segmentation fault 不知道這樣的寫法對不對 想說會不會是同步下載的關係 難道不能等一個下載玩 在接下一個嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.170.126 ※ 文章網址: http://www.ptt.cc/bbs/LinuxDev/M.1415632147.A.766.html
filiaslayers: 你怎麼不用script來做? 11/10 23:10
cutekid: 要不要把 cmd printf 出來看一下 11/11 11:36
lantw44: 有沒有可能 128 不夠大? 11/11 21:03
qsort: char *img[][2]有點怪,img ia a array pointers to char[2] 11/12 08:47
qsort: 所以你每個image name最多就兩個char, 扣掉\0, 剩一個char 11/12 08:47
qsort: 請問你的檔名是"a"這類的嗎? 11/12 08:48
qsort: 再來是,請不要用strcat, 那是下流的寫法 11/12 08:49
qsort: int len=0; //reset buff to head 11/12 08:55
qsort: len+=snprintf(buff+len,sizeof(buff)-len,format,...); 11/12 08:56
qsort: 建議把snprintf學起來,strcat真的不要再用了。 11/12 08:57
qsort: 嗯, 總結: 請愛用script. 11/12 08:58
dirkc: 原po的char *img[][2]部份應該無錯,img[][]是char * 11/12 11:28
qsort: @dirkc: 你說的對﹐是我誤會成"char img[][2]", 但我還是覺 11/12 13:01
qsort: 得有可能原po誤用了,一般人不會用到這麼復雜的(char*)[][] 11/12 13:02
a942195: 感謝樓上大大的回復 我在試看看 我也覺得strcat 很蠢 所 11/12 19:33
a942195: 所以也有想到用snprintf 11/12 19:34
s942816: 學生?文組 08/13 00:31