2012-02-24 23 views
0

我在C中有一個文件流,我想知道它中有多少行沒有遍歷文件。每條線的長度相同。我該怎麼辦?c文件流中的行數

回答

3

怎麼是這樣的:

  • 做一個fgets,並找出一條線是
  • 多久使用fseekftell

    fseek(fp, 0, SEEK_END); 
    size = ftell(fp); 
    
  • 鴻溝查找文件的大小按行數大小

您還可以使用fseekoftellooff_t工作。

0

讀取一行stat()將文件轉換爲get the total size,將總大小除以第一行的長度。

而不是使用stat()您也可以fseek()到該文件的末尾,然後使用ftell()來獲取大小。

+0

實際上,我會使用'stat'(或者實際上'fstat'),但它不是可移植的。 – 2012-02-24 11:10:19

0

通過線的長度以ftell()和除法。

2

如果它是安全的假設所有線路長度相等,你可以簡單地在第一線讀取,拿到它的長度,然後獲取文件大小,並通過線路長度除以文件的大小。

這將只用固定寬度編碼(ASCII-7,不同的8位的ANSI編碼,UTF-32)工作;使用可變寬度編碼(例如UTF-8),您將不得不掃描整個文件,因爲字符串長度不一定與字節數成正比。