Sie haben tatsächlich keinen Speicherplatz für die Bereitstellung von Daten zugewiesen. Das Definieren eines Zeigers definiert nur eine Variable, die die Adresse eines Datenblocks enthalten kann, sie weist den Block nicht zu.
Sie haben ein paar Optionen, ordnen Sie dynamischen Speicher aus dem Heap zu schreiben und den Zeiger darauf zeigen. Oder verwenden Sie statisch zugewiesenen Speicher auf dem Stack und übergeben Sie die Adresse an Ihre Anrufe. In diesem Fall hat der dynamische Speicher wenig Vorteile (da er temporär verwendet wird und klein ist). Sie hätten mehr zu tun, wenn Sie dynamischen Speicher verwenden würden - Sie müssen sicherstellen, dass Sie das bekommen haben, wonach Sie gefragt haben, wenn Sie es zugewiesen haben, und sicherstellen, dass Sie es zurückgegeben haben, wenn Sie fertig sind UND stellen Sie sicher, dass Sie es nicht verwenden nachdem du es zurück gegeben hast (tricky in einer großen App, vertrau mir!) Es ist nur mehr Arbeit, und du scheinst diese zusätzliche Anstrengung nicht zu brauchen.
Die folgenden Beispiele würden ebenfalls eine signifikante Fehlerprüfung erfordern, geben Ihnen jedoch die allgemeine Idee.
z.B.
char *pass = malloc (SOMESIZE);
printf("Write the password: ");
scanf("%s", pass);
if(strcmp(pass , "acopio") == 0)
oder
char pass[SOMESIZE];
printf("Write the password: ");
scanf("%s", pass);
if(strcmp(pass , "acopio") == 0)
Warum -1? Ich lerne; versuchte hier die Antwort zu finden; und für Anfänger ist es nicht leicht, andere Antworten zu verstehen. – jotape