qwertypkgg 2017-01-02 12:59 采纳率: 75%
浏览 927
已采纳

求问这个代码主要意义

int lines()
{
FILE *fp;
int line=0;
int filesize=0;
char ch=0;

if((fp=fopen("c:\filename.txt","r"))==NULL)
fp=fopen("c:\filename.txt","w");

fseek(fp,0,SEEK_END);//将指针移到文件末尾
filesize=ftell(fp);//获得文件的总的大小

fseek(fp,0,SEEK_SET);//将文件指针移到文件开头
 // printf("wenjianyigongyou %d da",filesize);
    while(filesize)
{
    ch=fgetc(fp);
    if(ch==0x0a)//0x0a表示换行,当每次换行时line++
    {
        line=line+1;
    }
    filesize--;//filesize为零时整个文件已经读完,判断结束
}

// printf("通讯录中一共有 %d个记录\n",line);
fclose(fp);
return line;
}

求详细一点,那个注释不是很懂

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-01-02 13:09
    关注
     int lines()
    {
    FILE *fp; //定义文件指针
    int line=0; //行数
    int filesize=0; //文件大小
    char ch=0; //保存读出的字符
    if((fp=fopen("c:\filename.txt","r"))==NULL) //打开文件
    fp=fopen("c:\filename.txt","w");
    
    fseek(fp,0,SEEK_END);//将指针移到文件末尾  文件指针是一个数字,指向当前读写位置距离文件开头的字节数,文件指针在哪里,就读取文件的什么地方
    filesize=ftell(fp);//获得文件的总的大小
    fseek(fp,0,SEEK_SET);//将文件指针移到文件开头,因为下面需要再读一次,输出行数
     // printf("wenjianyigongyou %d da",filesize); //输出文件大小
        while(filesize)
    {
        ch=fgetc(fp);
        if(ch==0x0a)//0x0a表示换行,当每次换行时line++ 0x0a也就是我们熟知的 \r 字符,代表换行,ascii=10或者16进制的 0a
        {
            line=line+1; //行数+1
        }
        filesize--;//filesize为零时整个文件已经读完,判断结束
    }
    // printf("通讯录中一共有 %d个记录\n",line); //输出有多少行
    fclose(fp);
    return line;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 matlab解优化问题代码
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误
  • ¥100 反编译微信小游戏求指导
  • ¥15 docker模式webrtc-streamer 无法播放公网rtsp
  • ¥15 学不会递归,理解不了汉诺塔参数变化
  • ¥15 基于图神经网络的COVID-19药物筛选研究
  • ¥30 软件自定义无线电该怎样使用
  • ¥15 R语言mediation包做中介分析,直接效应和间接效应都很小,为什么?