fprintf(fp, " %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t ", p->data.jobNo, p->data.name, p->data.sex,
时间: 2024-01-19 13:05:34 浏览: 133
p->data.birthday, p->data.address, p->data.phone, p->data.email, p->data.education, p->data.major);
这段代码是在将一个结构体中的数据按照一定的格式输出到文件中,其中fp是文件指针,p是一个指向结构体的指针,p->data.jobNo表示结构体中的工号数据,p->data.name表示姓名数据,以此类推。每个数据之间用制表符\t隔开,最后一定要记得加上空格。
相关问题
解释void savingRecord() { int i; FILE *fp=fopen("data.txt","w"); if(fp==NULL) { printf("文件无法打开"); } for(i=0;i<count;i++) { fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\n",a[i].class,a[i].name,a[i].num,a[i].phone1,a[i].phone2,a[i].addr,a[i].code); } printf("班级 姓名 学号 手机号 手机号-短号 家庭住址 邮编\n"); for(i=0;i<count;i++) { printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\n",a[i].class,a[i].name ,a[i].num ,a[i].phone1 ,a[i].phone2,a[i].addr,a[i].code); } fclose(fp); system("pause"); }
这是一个C语言的函数,名为savingRecord(),它没有返回值(void)。该函数的目的是将一些数据以特定的格式写入一个名为"data.txt"的文本文件中,同时将这些数据打印到控制台。具体来说,该函数使用fopen()函数打开一个文本文件,并将文件指针保存在指针变量fp中。如果文件打开失败,则会输出一条错误信息。接下来,该函数使用for循环遍历一个数组a,该数组中存储了一些学生的信息,例如班级、姓名、学号、电话号码等等。在for循环中,使用fprintf()函数将每个学生的信息按照指定的格式写入到文件中。其中,"\t"表示制表符,用于在输出时对齐。紧接着,该函数使用printf()函数将相同的数据输出到控制台,以便于用户查看。最后,该函数使用fclose()函数关闭文件,并使用system()函数暂停程序的执行,以便用户查看输出结果。
#include"head.h" void fsave(pstudent head, int* num) { FILE* fp; fp = fopen("幼儿园.txt", "w"); fprintf(fp, "%d\n", *num); fputs("编号\t\t姓名\t\t性别\t\t年龄\t\t班级\t\t缴费日期\t\t缴费年限\n", fp); while (head != NULL) { fprintf(fp, "%ld\t\t", head->id); fprintf(fp, "%s\t\t", head->name); fprintf(fp, "%s\t\t", head->gender); fprintf(fp, "%d岁\t\t", head->age); fprintf(fp, "%s\t\t", head->clas); fprintf(fp, "%d-%d-%d\t\t", head->date[0], head->date[1], head->date[2]); fprintf(fp, "%d-%d-%d\t\t\n", head->time[0], head->time[1], head->time[2]); head = head->next; } fclose(fp); } int fnread(pstudent* head, int* num)//读取信息 { char s[15] = { 0 }; int i = 0; pstudent middle; FILE* fp; fp = fopen("幼儿园.txt", "r"); fscanf(fp, "%d", num); i = 7; while (i--) fscanf(fp, "%s", s); i = *num; while (i--) { middle = (pstudent)malloc(sizeof(student)); if (middle == NULL) { printf("内存分配失败\n"); return 0; } else { middle->next = NULL; fscanf(fp, "%ld", &middle->id); fscanf(fp, "%s", middle->name); fscanf(fp, "%s", middle->gender); fscanf(fp, "%d岁", &middle->age); fscanf(fp, "%s", middle->clas); fscanf(fp, "%d-%d-%d", &middle->date[0], &middle->date[1], &middle->date[2]); fscanf(fp, "%d-%d-%d", &middle->time[0], &middle->time[1], &middle->time[2]); middle->next = *head; *head = middle; } } fclose(fp); return 1; }
这段代码看起来是一个简单的文件读写操作,主要功能是将一个链表结构体写入到文件中,或者从文件中读取出来。其中,fsave函数用于将链表结构体写入到文件中,而fnread函数用于从文件中读取出链表结构体。在fsave函数中,首先打开文件,然后写入链表节点的个数,接着按照一定的格式将每一个节点的信息写入到文件中,最后关闭文件。而在fnread函数中,首先打开文件,然后读取链表节点的个数,接着跳过表头,循环读取每一个节点的信息并动态分配内存,最后将每一个节点插入到链表中,并关闭文件。
阅读全文