数据块写函数
始终写入不正确。执行完之后输入,接着输出结构体数组stud是正确的,但是写入文件就写的不对了。也没有返回错误,只是写入不对。
#include<stdio.h>
#include<stdlib.h>//p320
#define SIE 4
struct student_type
{
char name;
int num;
int age;
char addr;
}stud;
void save()
{
FILE *fp;
int i;
if((fp=fopen("d:\\stu_list.txt","w"))==NULL)
{
printf("文件打开失败\n");
exit(1);
}
for (i = 0; i < SIE; i++)
{
if (fwrite(&stud, sizeof(struct student_type), 1, fp) != 1)
printf("文件写入失败\n");
}
fclose(fp);
}
/*void display()
{
FILE* fp;
int i;
if (fp = (fopen("d:\\stu_list.txt", "r")) == NULL)//只读方式打开文件
{
printf("文件打开失败\n");
exit(1);
}
for(i = 0;i<SIE; i++)
{
fread(&stud, sizeof(struct student_type), 1, fp);
printf("%-10s,%4d,%4d,%-15s", stud.name, stud.num, stud.age, stud.addr);
}
fclose(fp);
}*/
int main()
{
int i;
printf("请输入:\n姓名\t\tid\t年龄\t家乡\n");
for (i = 0; i < SIE; i++)
{
scanf("%s%d%d%s", stud.name, &stud.num, &stud.age, stud.addr);
printf("下一个\n");
}
/* for (i = 0; i < SIE; i++)
{
printf("%s,\t%d,\t%d,\t%s\n", stud.name, stud.num, stud.age, stud.addr);
}*/
save();
/* display();*/
return 0;
} 本帖最后由 我就是个弟弟 于 2019-7-2 13:38 编辑
画一个结构体的内存模型, 数据都没填满结构体,你拷贝什么?
你这样只会脏写
我看了一下文档,你看fput和fputs行不行,一个成员一个成员的写进去。 还有fprint应该也可以 说白了就是一个重定向 我就是个弟弟 发表于 2019-7-2 13:43
还有fprint应该也可以
用fprint可以正常运行了
页:
[1]