ti ringrazio molto

ho provato intanto a riconoscere comandi semplici ma ho già prime difficoltà:

codice:
int main ()
{
	char* cmd;

	while(1) {

		scanf("%s", &cmd);
		
		if (!(strcmp(&cmd, "start"))) {
			start();
		}
		else if (!(strcmp(&cmd, "stop"))) {
			return 0;
		}	
		else {
			printf("Comando non riconosciuto\n");
		}
	}
	
	return 0;
}
a parte che ricevo questi warning dal compilatore gcc (su ubuntu):

alla linea di scanf:
codice:
"format '%s' expects type 'char *', but argument 2 has type 'char **' "
alle linee dove uso strcmp
codice:
"passing argument 1 of 'strcmp' from incompatible pointer type"
ma oltre a questo, ottengo un segmentation fault alla chiusura del programma se digito comandi di lunghezza maggiore a 3 caratteri.
tuttò ciò è sicuramente dovuto alla mia ignoranza in materia di scanf e puntatori, quindi sapreste correggermi o darmi un indizio?
vi ringrazio ancora