Re: [問題] C file I/O 逗點分割字串

看板C_and_CPP (C/C++)作者 (好人超)時間14年前 (2011/11/19 14:49), 編輯推噓1(104)
留言5則, 5人參與, 最新討論串2/3 (看更多)
※ 引述《lalaboom (lalaboom)》之銘言: : 大家好 : 小弟是剛學C的新手, : 在XP底下用DEV-C++ 做練習, : 1.想要寫一支程式產生多個資料輸出到.txt ex: 25,123,2,35... : 做法是用 data = rand() 產生資料 : 再用fprintf(fp,"%d,",data); //這邊看書上好像不只fprintf可以用, : 想請問有什麼優缺點嗎? : Q: 這邊我想只產生0~255的資料,想說看之後可以只用一個byte的陣列去裝, : 那rand()我該如何寫呢,還是有什麼好辦法^^? char datas[大小]; for (i = 0; i < 大小; i++) datas[i] = rand() % 256; : 2.就是讀剛剛輸出的檔案了,我是用fscanf()來讀檔案,這邊也有很多選擇可用, : 看書上是寫說一個字元一個字元讀,或是讀成字串,想請問一下有什麼差別呢? 同樣是檔案的讀寫,許多語言通常都會提供許多種方式 這其實沒有對錯,會影響到的只有 1.程式好不好寫 2.效能好不好 新手可以先不要理會效能問題,把程式寫出來的方法就是好方法 : 接下來我就不知道怎麼做了XD,如何能把逗點去掉,裝到陣列裡面,網路上google : 了一下是說要使用atoi(),只是不管我怎麼寫compile都過不去,不然就是程式 : 直接關閉...冏 假設 testf 的內容是「25,123,2,35,1」 以下的程式可以把 testf 的每個數字逐一讀出來 並且一個數字一行的印在螢幕上 你可以參考後,改成你想做的處理 #include <stdio.h> int main() { FILE *fp = fopen("testf", "r"); int num; while (1) { fscanf(fp, "%d,", &num); if (feof(fp)) break; printf("%d\n", num); } } compile過不去,請仔細看它的錯誤訊息 程式直接關閉的話比較麻煩,只能仔細找到出錯的那一行並修正 以這個例子來說,如果不用fscanf的話 可以改用fgets先讀進整行的資料,加上strtok切割,再atoi轉成整數 效能要分析過才知道,但程式寫起來就麻煩了些 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.35.184.77 ※ 編輯: james732 來自: 114.35.184.77 (11/19 15:04)

11/19 15:35, , 1F
sscanf在哭泣....XD
11/19 15:35, 1F

11/19 20:47, , 2F
char 放 0~255 的話要記得 unsigned 唷~
11/19 20:47, 2F

11/20 15:44, , 3F
題外話 data本身就是複數唷 不用加s
11/20 15:44, 3F

11/22 00:26, , 4F
一樓XD
11/22 00:26, 4F

11/22 06:07, , 5F
推一下三樓的英文單字教學
11/22 06:07, 5F
文章代碼(AID): #1Enr6Gv5 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Enr6Gv5 (C_and_CPP)