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;
}
求詳細一點,那個注釋不是很懂
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;
}