簡體   English   中英

在cygwin上使用fscanf()讀取“文本”文件的行

[英]Reading lines of a “text” file using fscanf() on cygwin

考慮以下代碼:

FILE * fp = fopen( filename, "r" );
int ret = fscanf(fp, "%d, %d, %d, %d, %d\n", &a, &b, &c, &d, &e);
if (ret != 5)
{
    // error and exit
}
long file_pos = ftell(fp);
printf("file position: %ld\n", file_pos);

正在讀取的文件行是:

6, 5, 3, 2, 6\r\n  

也就是說,該文件具有Windows行尾。

文件位置出來是20,而我希望是15。
但是,如果我將文件打開模式更改為二進制( "rb" ),則文件位置為15。

仔細研究了這一點之后,我沒有找到任何有關為什么發生這種情況的線索,而只是發現人們建議不要使用fscanf()。

但是我想知道為什么文件指針不在應有的位置。

fscanf可能正在緩沖文件-即,它讀取某個大小的塊,然后解析該文件以解碼內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM