array - struct c++



C problema di struct (3)

Sto cercando di conoscere le strutture in C, ma non capisco perché non posso assegnare il titolo come il mio esempio:

#include <stdio.h>

struct book_information {
 char title[100];
 int year;
 int page_count;
}my_library;


main()
{

 my_library.title = "Book Title"; // Problem is here, but why?
 my_library.year = 2005;
 my_library.page_count = 944;

 printf("\nTitle: %s\nYear: %d\nPage count: %d\n", my_library.title, my_library.year, my_library.page_count);
 return 0;
}

Messaggio di errore:

books.c: In function main’:
books.c:13: error: incompatible types when assigning to type char[100]’ from type char *’

https://src-bin.com


Answer #1

Come dice il messaggio, il problema è che stai cercando di assegnare tipi incompatibili: char* e char[100] . È necessario utilizzare una funzione come strncpy per copiare i dati tra il 2

strncpy(my_library.title, "Book Title", sizeof(my_library.title));

Answer #2

LHS è un array, RHS è un puntatore. È necessario utilizzare strcpy per inserire i byte indicati nell'array.

strcpy(my_library.title, "Book Title");

Fare attenzione a non copiare i dati di origine> 99 byte qui poiché è necessario spazio per un carattere null ('\ 0') che termina la stringa.

Il compilatore stava cercando di dirti cosa c'era di sbagliato in qualche dettaglio:

errore: tipi incompatibili quando si assegna a digitare 'char [100]' da tipo 'char *'

Guarda di nuovo il tuo codice originale e vedi se questo ha più senso ora.


Answer #3

title è un array di caratteri - questi non sono assegnabili in C. Usa strcpy(3) .





struct