我们有这个结构
typedef struct objeto livro;
struct objeto
{
char titulo[100], autor[100];
int cota;
};
这段代码:
int main()
{
FILE *f;
int tam=5, i=0;
livro c[5];
char a={"a"};
f == fopen("bib.dat", "wb");
if(f == NULL)
{
printf("erro ao abrir ficheiro");
}
for(i=0; i<tam; i++)
{
(*c).titulo=a;
(*c).autor=a;
(*c).cota=i;
fwrite(c, sizeof(c), 1,f);
}
return 0;
}
但是它说错误:赋值给表达式的数组类型:
(*c).titulo=a;
(*c).autor=a;
我已经尝试了我在帖子中看到的所有内容,但我无法使其发挥作用
答案 0 :(得分:2)
首先,char a = {"a"};
是错误的,因为a
是单个char变量,但双引号"a"
表示字符串文字。要克服此错误,首先声明a
是一个像
char a[10] = "a";
然后使用strcpy()
或strncpy()
,因为(*c).titulo=a
无效,因为a
现在被声明为数组&amp;像(*c).titulo=a
一样直接将一个char数组分配给另一个char数组将尝试更改titulo
的基址,这是不可能的。
替换以下声明
(*c).titulo=a;
(*c).autor=a;
与
strcpy((*c).titulo,a);
strcpy((*c).autor,a);
其次,声明
f == fopen("bib.dat", "wb");
错误,可能您想使用=
代替==
f = fopen("bib.dat", "wb");
答案 1 :(得分:0)
将库函数strncpy()用于字符串。