[問題] 求檔案的列數

看板C_and_CPP (C/C++)作者 (b8888)時間16年前 (2010/05/09 15:58), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 求文字的列數 希望得到的正確結果: 2 程式跑出來的錯誤結果: 0 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) c 有問題的code: (請善用置底文標色功能) #include "stdio.h" main(){ FILE *fp ; int cnt ; char str[300]; cnt=0; if ((fp=fopen("/usr/tmp/a1","r"))==NULL) { printf ("operror "); exit(0); } while (fread(&str,sizeof(str),1,fp)==1){cnt++;} printf ("==>%d\n",cnt); } 補充說明: 各位大大好 這個程式可以編譯過,但執行結果卻有問題,其中a1是一個文字檔卻定有二列資料 這個程式想模仿 unix 下的指令 "wc -l file-name "的功能 求出檔的列數(筆數) 不知那錯了,可否幫我看一下或是有什麼資料可供參考,謝謝 另,它沒有getline 這個函數 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.29.241.237

05/09 16:57, , 1F
有gets嗎
05/09 16:57, 1F

05/09 16:59, , 2F
不對...先當我沒問XD
05/09 16:59, 2F

05/09 18:12, , 3F
sizeof(str)的結果是300, 你的檔案有300 bytes嗎?? 加上
05/09 18:12, 3F

05/09 18:12, , 4F
fread也不會自動以"\n"分隔, 你需要的是 fgets() 吧:)
05/09 18:12, 4F

05/09 18:14, , 5F
另外~~你可以也要查一下fread的回傳值再來看你的while
05/09 18:14, 5F

05/09 18:14, , 6F
中止條件合不合理, 是不是如你所想的東西XD
05/09 18:14, 6F
文章代碼(AID): #1Bvcj3ES (C_and_CPP)
文章代碼(AID): #1Bvcj3ES (C_and_CPP)