[問題] 讀檔 陣列轉換 寫入檔案 問題

看板C_and_CPP (C/C++)作者 (coffee)時間10年前 (2015/11/09 17:44), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/1
最近常在做這重複的事情: http://imgur.com/8kglEPk
就是機器產生出.txt, 因為格式剛好與新機器不同, 因此目前都是人工手動調整變換格式 又剛學C一陣子, 想說就實際例子剛好當個作業來練習, 程式碼: #include <stdio.h> #include <stdlib.h> #include <string.h> FILE *fp1, *fp2; int main(void) { char *token; char szLine[100]; // 足夠裝下一行的 buffer char seps[] = ",\n"; // 以逗點與換行當作分隔符號 char *coeff[10][10]; char *newcoeff[10][10]; char filename1[30], filename2[30]; int i, j; i = 0; printf("請輸入來源檔名: "); scanf("%s", filename1); printf("請輸入目的檔名: "); scanf("%s", filename2); fp1 = fopen(filename1, "r"); fp2 = fopen(filename2, "w+"); if ((fp1 == NULL) || (fp2 == NULL)) { printf("file open error.\n"); } else { while (fgets(szLine, sizeof(szLine), fp1)) // 一次讀進一行 { token = strtok(szLine, seps); // 分割 if ((token != NULL)) { for(j = 0; j <10; j++) { token = strtok(NULL, seps); // 繼續分割 //printf("%s\n", token); coeff[i][j] = token; newcoeff[i][j] = coeff[i][j]; fputs(coeff[i][j], fp2); printf("%s", coeff[i][j]); } printf("\n"); } i = i + 1; } fclose(fp1); fclose(fp2); } printf("測試看看~~~~~\n\n"); /*for(i = 0; i< 4; i++) { for(j = 0; j <10; j ++) { printf("%s ", newcoeff[i][j]); } printf("\n"); }*/ system("pause"); return 0; } 實際結果: http://imgur.com/nLky6io
遇到了以下幾個問題, 想請教各位高手: 1. 螢幕輸出與實際檔案內容不一致: 螢幕輸出: http://imgur.com/jUxe1xH
實際檔案內容: http://imgur.com/WodqLFe
實際內容最前面的1都被砍掉了..... 2. 想將螢幕輸出內容寫到另一個新檔案中,內容是寫進去了, 但格式不一致: 螢幕輸出: http://imgur.com/jUxe1xH
新檔案內容: http://imgur.com/pLHnHDU
新檔案內容完全沒有換行的動作..... 3. 也是目前最困擾我的, 完全沒頭緒該如何下手, 就是該如何把之前 去掉的"逗號", 再新增到相對應的位置 請各位不吝指教, 請告訴我該朝哪個方向做修改, 或是該參考哪些網路資料呢? 感謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.233.249 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1447062260.A.9D0.html

11/09 19:02, , 1F
不要用strtok呀,太依賴現成含數
11/09 19:02, 1F

11/09 19:32, , 2F
哈 一步一步來吧 我用現成的都還沒做出來....
11/09 19:32, 2F

11/09 19:32, , 3F

11/09 19:33, , 4F
改這樣就好了吧 只是coeff處理下一行 存的值就沒用了
11/09 19:33, 4F

11/10 22:25, , 5F
感謝幫忙!! 經過修改後已完成~
11/10 22:25, 5F
文章代碼(AID): #1MG6hqdG (C_and_CPP)
文章代碼(AID): #1MG6hqdG (C_and_CPP)