关于fgets函数的疑问

Sheldon
  • 24

1.打开一个文档,文档的内容如下

        012345678901234567890123456789
        012345678901234567890123456789

2.代码如下

#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>

int main(){
    FILE* fp=NULL;
    if((fp=(fopen("new.dat","r")))==NULL)
        printf("open failure");
    
    char num[10];
    while(1){
        if((fgets(num,10,fp))==NULL){
            if(ferror(fp)){
                printf("read error\n");
                fclose(fp);
                return -1;
            }
            else{
                printf("reach to end\n");
                fclose(fp);
                return 0;
            }
        }        
        else{
            printf("%s\n",num);
        }
        
    }
    fclose(fp);
    return 0;
}

3.结果如下:

        012345678
        901234567
        890123456
        789
        
        012345678
        901234567
        890123456
        789
        
        
        
        
        
        reach to end

我有些疑问,关于“789”和“reach to end”之间的那么多的换行是怎么回事?

回复
阅读 1.6k
1 个回答

很简单,是因为你的文档内容空了许多行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏