从C中加载文件中的数据

时间:2014-11-12 17:30:17

标签: c database

我正在创建一个简单的C程序 - 员工数据库......我的数据存储在.txt文件中,用逗号和\ n分隔,所以它看起来像这样:

  

DATA1,ID1,NAME1

     

DATA2,ID2,NAME2

从文件加载所有数据并将每个值保存为自变量(例如p-> data,p-> id,p-> name)的最佳方式(在C中,而不是C ++)是什么?

这是我用来将数据存储到变量中的代码(不是文件,只是脚本的变量):

    void insert(emp *p,int n)
{
  p=p+n;
  printf("\nenter name of emplyee:");
  _flushall();
  gets(p->name);
  printf("\nenter employee id:");
  scanf("%d",&p->empid);
  printf("\nenter salary of the emplyee:");
  scanf("%d",&p->salary);
  printf("\nenter phone no of the emplyee:");
  flushall();
  gets(p->ph);
}

此脚本将数据保存到文件中:

void sejv(emp *p,int n)
{
      int i;
        FILE *fptr;
    fptr=fopen("ulozka.txt","w+");
    if(fptr==NULL){
      printf("Error opening file!");   
      getchar();             
   }
  printf("Ukladani...");
  for(i=0;i<n;i++)
  {
   fprintf(fptr,"%d,%s,%d,%s\n",p->empid,p->name,p->salary,p->ph);   

    p=p+1;
  }

   fclose(fptr);
   exit(0);
 }

我只需要将数据加载到main函数中,以便我可以使用它。

编辑: 我正在添加其余的代码:

typedef struct employee
{
  char name[20],ph[20];
  int empid,salary;
}emp;

void main()
{
  emp e;
  emp *p;
  int n=0,ch;
  p=&e;
}

和&#34;某事&#34;从我需要创建的功能......

void nacti(emp *p,int n)
{
      int i;
        FILE *fptr;
    fptr=fopen("ulozka.txt","r");
    if(fptr==NULL){
      printf("Error opening file!");   
      getchar();             
   }
 printf("Nacitani...");

//loading function
      p=p+n;
   fscanf(fptr,"%d,%[^\,],%d,%s", &p->empid, p->name, &p->salary,p->ph);
   printf("%s", p->name);


 }

我需要一个能够通过collumns和行读取txt文件中的数据的函数(一个将第一行数据添加到ap的循环,然后将p的值增加1,从第二行插入数据)等等......)

感谢您的任何建议......

1 个答案:

答案 0 :(得分:0)

检查以下代码,如下所示:

struct data
{
    int index;
    int id;
    char name[30];
};

int main ()
{
    struct data p[3];
    int i=0;
FILE *fp = fopen("input.txt","r+");
while(fscanf(fp,"%d,%d,%s",&p[i].index,&p[i].id,p[i].name) != EOF)
{
    i++;
}
i=0;
while(i<3)
{
fprintf(fp,"%d %d %s\n",p[i].index,p[i].id,p[i].name);
i++;
}
fclose(fp);
}