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 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算