→ Feis:換行有什麼問題? 11/05 12:01
※ 編輯: Hack 來自: 114.45.105.218 (11/05 12:43)
→ yvb:fgets() + sscanf() ? 11/05 12:42
→ yvb:有一行 getc() + ungetc() + fscanf() 被修掉了... 11/05 12:46
→ yvb:還有, 看 return code 應該也可判斷讀檔結束沒. 11/05 12:46
→ Hack:不好意思 剛剛覺得我敘事能力不好.. 所以修一下文章 11/05 12:48
推 yvb:所以可能會有一列只有一個或兩個數字的情況? 11/05 12:50
→ Hack:不知道一列有幾個數字.. 11/05 12:51
→ Hack:但是第一列到最後一列行數都是一定的 11/05 12:52
→ Hack:只是有的檔案可能三行 像是我舉的例子 有的可能十行這樣Orz 11/05 12:53
推 danny8376:yvb大的fgets() + sscanf()應該比較簡單www 11/05 13:00
推 yvb:如果一列可能很多行, 那 fgets() 就不知要多大 buffer 了. 11/05 13:02
→ yvb:當然如果是自已的資料, 就可以知道每列字數上限就是了. 11/05 13:04
→ Hack:有人可以簡單寫一個範例借小弟參考嗎Orz 11/05 13:20
→ CaptainH:那你先把第一列有幾個數字算一下就好啦 XD 11/05 14:05
就是不知道該如何算...XD
→ MOONRAKER:何不把你寫的貼上來給大家改改。 11/05 14:09
→ MOONRAKER:既然「卡好久」了,那卡住的東西拿來瞧瞧如何。 11/05 14:10
float Array[579][3]; //目前只能寫死陣列大小
int count = 0;
char str[100];
FILE *fileIN = fopen("input.txt","r");
if(fileIN == NULL) perror("Error\n");
else
{
while( fgets(str,100,fileIN) != NULL )
{
sscanf(str,"%f %f %f",&Array[count][0],
&Array[count][1],&Data[count][2]); //目前只能寫死輸入行數
count++;
}
}
MOON大,我目前只能寫死輸入的行數、列數
陣列大小可能可以用動態陣列解決
但不知道該怎麼解決判斷行數的問題...
※ 編輯: Hack 來自: 140.115.51.180 (11/05 14:27)
※ 編輯: Hack 來自: 140.115.51.180 (11/05 14:28)
推 flydragon198:用空白來切割字,用換行符號來判斷該列是否結束 11/05 14:38
→ flydragon198:如果列不知道有幾個數字,就先宣告個大一點的來儲存 11/05 14:38
推 yvb:那麼, 改試試看 fgets() + strtof()/strtod() 吧. 11/05 15:06
→ yvb:sscanf() 可以後面先設很多個變數來接, 最後看 return code, 11/05 15:08
→ yvb:就可以知道讀到幾個有效資料. 11/05 15:08
→ Hack:感謝各位前輩的指導 終於寫出來了~ 11/05 16:07
→ Hack:感謝cutekid大的教學~!!您的code我研究了好一會 好漂亮的寫法 11/05 16:09
→ Hack:謝謝大家~~~ 11/05 16:09