在C语言中将结构附加到文件时遇到的问题

在C语言中将结构附加到文件时遇到的问题,c,file,io,structure,fwrite,C,File,Io,Structure,Fwrite,我在将结构附加到文件时遇到一些问题: 操作系统:Ubuntu 14.04 结构: struct baris { char name[30]; char trusted[1]; int phone; int id; }; Func: 我得到的是: fabio\00\00\00\00\00\00\00\00\00fab\00\00\00\00\00\00\00\00\00fab\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00

我在将结构附加到文件时遇到一些问题: 操作系统:Ubuntu 14.04

结构:

struct baris
{
    char name[30];
    char trusted[1];
    int phone;
    int id;
};
Func:

我得到的是:

fabio\00\00\00\00\00\00\00\00\00fab\00\00\00\00\00\00\00\00\00fab\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 <1\B5y\00\00\00\00\00\00\00fab\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \C5f\DAy\00\00\00\00\00\00\00

fabio\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00输出看起来基本正确,您期望什么

您正在将二进制数据写入二进制文件。二进制文件不太容易手动检查

例如,结构的第一个成员,
name
,在输出中的长度始终为30字节

请注意@BLUEPIXY在评论中指出:

scanf("%s",new.trusted);
如果输入非零长度,则触发未定义的行为,因为
trusted
仅为字符串终止符使用的1个字符长。你应该增加它的长度,或者(更好!)停止像这样直接使用
scanf()
,而是使用
fgets()
读取整行输入,并使用
sscanf()
解析它


此外,当使用可能失败的函数(如
scanf()
sscanf()
fgets()
)时,必须先检查返回值,然后才能依赖它们成功。

欢迎使用堆栈溢出!“代码片段”仅用于Javascript/HTML,不用于“任何”代码。(由于没有那么详细的工具提示,这实际上是一个很容易犯的错误。)@Jongware yeap,我看到我只是为了突出显示而添加了它,还有其他方法吗?
char trusted[1]的意义是什么?为什么不信任
char
%c
scanf(“%s”,新的。受信任的)
trusted
是一个字符<代码>字符信任[1]
应为
字符可信[2]“我得到了什么”?????你到底在哪里买的?您没有读取所提供代码中的任何位置的文件。printf上的输出似乎没有问题。我会检查一下长度和长度。非常感谢。
scanf("%s",new.trusted);