【C】一个读取文件记录器

分享一下!!!

   

#include<stdio.h>
#include<windows.h>
#define N 70000  //定义行数!!用空间换取时间
struct student
{
char name[20];
int num;
}a[N];
int main()
{
    void GetOpenFileLine(char *szFile);
    void otherFile(char *buffer);
    char buffer[256];
    ZeroMemory(buffer,sizeof(buffer)/sizeof(char));
    printf("请输入需要读取文件的【绝对路径】\n");

    fflush(stdin);
    gets(buffer);//因为输入的文件中可能有空格等,所以用fgets
    otherFile(buffer);
    system("pause");
    
}




void otherFile(char *buffer)
{
    FILE *fp;
    char ch='\\';
    int i,j=0;
    
    
    for(i=0;buffer[i]!='\0';i++)
    {
        if(buffer[i]==ch)
        {
            buffer[j++]='\/';
        }
        else
        {
            buffer[j++]=buffer[i];
        }
        
    }
    buffer[j]='\0';
    fp=fopen(buffer,"r");
    if(NULL==fp)
    {
        system("cls");
        printf("can not open the file");
        Sleep(3000);
        return;
    }
    
    else
    {
        GetOpenFileLine(buffer);
    }
    
    
}

void GetOpenFileLine(char *szFile)
{
    int iCounter=0;
    int i=0;
    float persent=0;
    char buffer[256];
    FILE *fp=fopen(szFile,"r");
    while(!feof(fp))
    {
        fgets(buffer,256,fp);
        iCounter++;
    }
    printf("文件一共有%d行\n",iCounter);
    fclose(fp);
     fp=fopen(szFile,"r");
    while (!feof(fp))
    {
        fscanf(fp,"%s %d ",a[i].name,&a[i].num);
        i++;
        persent=(float)i/iCounter;
        printf("\r");
        printf("正在读取第%d行!\t已完成%0.2f%%",i,persent*100);
        Sleep(10);
        
    }
    
}

 

posted on 2014-06-22 10:52  stupid_one  阅读(822)  评论(0编辑  收藏  举报

导航