#include<stdio.h>
#include<conio.h>
void dem(FILE *fp)
{
long dem=0;
char word[128];
while(!feof(fp))
{
int n=fscanf(fp,"%s",word);
if(n>0)
dem++;
else
break;
}
printf("so tu trong tap tin:%d",dem);
}
void demsodong(FILE *fp)
{
long dem=1;
char line[2048];
while(fgets(line,2048-1,fp)!=NULL)
{
dem++;
}
printf("\nso luomg dong la %ld", dem);
}
void main()
{
FILE *fp=fopen("data.txt","rt");
if(fp==NULL)
{
printf("file not found");
return;
}
dem(fp);
demsodong(fp);
fclose(fp);
getch();
}
Hàm đếm số dòng bị sai (Kết quả hàm demsodong trả về luôn là 0)
Bạn dùng cùng một đối tượng file thì sau khi đọc xong ở hàm dem thì sẽ trỏ đến cuối file. Để sử dụng lại ở hàm demsodong thì phải move con trỏ file về lại đầu file
4 Likes
- Bạn nên để prototype như sau :
void dem(const char *fileName);
void demsodong(const char *fileName);
- Trong hàm
dem
vàdemsodong
bạn thực hiện mở file và đóng file. - Không đóng và mở file trong hàm
main()
2 Likes
Chuẩn r. Thank 2 bạn nha.