我正在创建一个简单的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,从第二行插入数据)等等......)
感谢您的任何建议......
答案 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);
}