关于文件的操作!!
#include <iostream.h>
#include "stdio.h "
#include "string.h "
#define NUM 100
typedef struct ad_stu
{
char id[10];
char name[20];
char department[10];
}adstu;
int i=0;
void d_save(adstu t_stu[],FILE *stu)
{
int ii;
for(ii=0;ii <i;ii++)
{
fwrite(&t_stu[ii],strlen(),1,stu);
}
}
void main()
{
char c;
adstu t_stu[NUM];
FILE *stu;
while(c!= 'q ')
{
stu=fopen( "c:\\student.txt ", "a+ ");
cout < < "please input id " < <endl;
cin> > t_stu[i].id;
cout < < "please input name " < <endl;
cin> > t_stu[i].name;
cout < < "please input department " < <endl;
cin> > t_stu[i].department;
cout < < "input choice (q)uit or (c)ontinue " < <endl;
cin> > c;
i++;
}
d_save(t_stu,stu);
fclose(stu);
}
为什么我用文件写入内容但有好多乱码?
我认为我在结构体中定义了数据的大小文件写入时定义的数据大小超过了输入的文件大小系统自动生成了一些乱码。
但我不会解决这个问题,还请哪位大虾指教啊!!
[解决办法]
void d_test(){
char c;
adstu t_stu[NUM];
int count=0;
while(c!= 'q ' && count <NUM)
{
cout < < "please input id " < <endl;
cin> > t_stu[count].id;
cout < < "please input name " < <endl;
cin> > t_stu[count].name;
cout < < "please input department " < <endl;
cin> > t_stu[count].department;
cout < < "input choice (q)uit or (c)ontinue " < <endl;
cin> > c;
count++;
}
FILE *stu = fopen( "c:\\student.txt ", "a+ ");
fwrite(t_stu,sizeof(adstu),count,stu);
fclose(stu);
}
[解决办法]
size_t fwrite(
const void *buffer,
size_t size,
size_t count,
FILE *stream
);
fwrite写的是二进制文件。
你可以采用futs
eg. fputs( "aaaaaaaaaaaaa你好 ",stu);