您好我正在尝试将结构写入文件。 以下是代码。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
/*structure*/
struct student
{
char name[10];
char space[1];
char rollno[5];
}head_rec;
/*main*/
void main()
{
FILE *fout;
if(fout=fopen("output.txt","w")==NULL)
{
printf("Cannot open the file to write");
exit;
}
memset(&head_rec,'\0',sizeof(struct student);
sprint(head_rec.name,"SOUMYA",6);
memset(head_rec.space,' ',1);
memset(head_rec.rollno,'\0',sizeof(head_rec.rollno);
sprint(head_rec.rollno,"0000",4);
head_rec.rollno[4]='\0';
fwrite(&head_rec,sizeof(struct student),1,fout);
}
输出:
SOUMYA 0000 ^ @
如何摆脱最后一个角色?
答案 0 :(得分:1)
由于您要将整个结构写入文件,因此需要避免填充。这可以这样做:
#pragma pack(push)
#pragma pack(1)
struct student
{
char name[10];
char space[1];
char rollno[5];
}head_rec;
#pragma pack(pop)
此外,您的主要功能必须返回integer
值。因此,将void main()
更改为int main()
另请注意:使用snprintf
代替sprintf
,因此您可以指定目标缓冲区的最大大小,这样可以更安全。
加:
if(fout=fopen("output.txt","w"))
应该是:
if((fout=fopen("output.txt","w"))==NULL)