C语言分配给具有数组类型的表达式

时间:2018-05-29 15:38:39

标签: c file

我们有这个结构

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;

我已经尝试了我在帖子中看到的所有内容,但我无法使其发挥作用

2 个答案:

答案 0 :(得分:2)

首先,char a = {"a"};是错误的,因为a是单个char变量,但双引号"a"表示字符串文字。要克服此错误,首先声明a是一个像

这样的char数组
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()用于字符串。