小白求助
我想将单链表中的数据读取到txt文件中但是写入的函数不知出了什么问题写入后是乱码,从文件读取输出的函数没有问题,麻烦大佬们看看<void readToFile(struct Node* list)//list是链表头
{
FILE* fp;
if ((fp = fopen("D:\\qt creator code\\homework2\\info_employee.txt", "wb")) == NULL)
{
printf("写入文件失败!\n");
exit(0);
}
struct Node* pMove = list->next;
emp *data_read = (struct employee *)malloc(sizeof (struct employee));
while (pMove != NULL)
{
strcpy(data_read->name,pMove->data.name);
data_read->num = pMove->data.num;
data_read->age = pMove->data.age;
data_read->emp_time.year = pMove->data.emp_time.year;
data_read->emp_time.year = pMove->data.emp_time.month;
data_read->emp_time.year = pMove->data.emp_time.day;
data_read->salary = pMove->data.salary;
fwrite(data_read,sizeof (emp),1,fp);
pMove = pMove->next;
}
fclose(fp);
}>
谢谢大家{:10_266:} 本帖最后由 jackz007 于 2020-12-27 17:06 编辑
void readToFile(struct Node * list)//list是链表头
{
int c ; // 记录数计数器
FILE * fp ;
if ((fp = fopen("D:\\qt creator code\\homework2\\info_employee.txt", "wb")) == NULL) {
printf("写入文件失败!\n") ;
exit(0) ;
} else {
c = 0 ; // 记录数计数器归 0
fwrite(& c , sizeof(int) , 1 , fp) ; // 预留一个整型数的存储空间
for(c = 0 ; list ; list = list -> next , c ++) fwrite(list , sizeof (emp) , 1 , fp) ;
fseek(fp , 0 , 0) ; // 移动读写指针到文件开头
fwrite(& c , sizeof(int) , 1 , fp) ; // 记载记录数,读取文件的时候有用
fclose(fp) ;
}
} b是打开二进制文件的,.bin,不是.txt;而且用fscanf会更好
页:
[1]