Mi spiegate il perchè un inizializzazione di questo tipo non è corretta:

codice:
	c = "cane";

Ad esempio inizializzando cosi

codice:
char c[10]={"cane"};
o tramite una scanf tutto è ok?


codice:
#include <stdio.h>
typedef struct{
	int prezzo;
	char *nome;	
}libro;

int main(void)
{
	libro uno;

	uno.prezzo = 120;
	uno.nome="lupo";
	
	printf("Il libro %s costa %d\n", uno.nome, uno.prezzo);
	return 0;
}
Se dichiaro nome un puntatore ok, ma se dichiaro char e vado ad inizializzare nel corpo non va..
Ve ne sarei grado se mi risolvete questi dubbi.
Grazie!