2 qwertypkgg qwertypkgg 于 2017.01.03 10:49 提问

求大神解释代码 具体一点的

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;
}

求详细解释 具体一点的额

2个回答

caozhy
caozhy   Ds   Rxr 2017.01.03 10:49
已采纳
 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;
}

http://ask.csdn.net/questions/355586

昨天已经完完全全,详详细细回答你了。你视而不见,让人伤心。

qwertypkgg
qwertypkgg sorry 十分感谢
12 个月之前 回复
qwertypkgg
qwertypkgg 我之前一点开通知 他就显示页面不存在。。我就又发了几个- -
12 个月之前 回复
Tiger_Zhao
Tiger_Zhao   Rxr 2017.01.03 10:52

注释已经够清楚了。
函数解释去看帮助。
如果还有困难,那么你需要一个家教。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!