[英]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.