作者james732 (好人超)
看板C_and_CPP
標題Re: [問題] C file I/O 逗點分割字串
時間Sat Nov 19 14:49:50 2011
※ 引述《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)
→ firejox:sscanf在哭泣....XD 11/19 15:35
→ Dannvix:char 放 0~255 的話要記得 unsigned 唷~ 11/19 20:47
→ funnymean:題外話 data本身就是複數唷 不用加s 11/20 15:44
→ xatier:一樓XD 11/22 00:26
推 ericinttu:推一下三樓的英文單字教學 11/22 06:07