Sie haben einige Fehler gemacht. Erstens, wenn Sie eine Zeichenfolge einfügen möchten, können Sie die %s
verwenden, aber Sie müssen ein Array von char
verwenden, in dem Sie diese Zeichenfolge speichern können. Das heißt, Sie müssen so etwas schreiben.
char input[100];
scanf("%s", input);
und dann wird es funktionieren. Dieser Codeschnipsel bedeutet: Ich muss eine Zeichenfolge einfügen (speichern). Also erstelle ich zuerst einen Ort, an dem ich ihn speichern kann (achten Sie darauf, dass der String maximal 99 Zeichen haben muss; mein Array hat die Größe 100, aber das letzte Zeichen wird verwendet, um das Ende des Strings darzustellen), und dann benutze ich die scanf
schreibe was ich will. Der zweite Fehler ist, dass wenn Sie zwei Strings vergleichen möchten, Sie nicht einfach die ==
oder !=
verwenden können, wie wenn Sie mit Zahlen arbeiten. Die string.h
Bibliothek können Sie die strcmp
Funktion zu verwenden, wie folgt aus:
if (strcmp(name, input) == 0) // this means the strings are equal
...
else
...
daran erinnert, dass
char* name = "Alina";
char input[100];
Schließlich hier sind Sie ein untersuchter Version des Codes:
#include <stdio.h>
#include <string.h>
int main() {
char* name = "Alina";
char input[100];
printf("What's your name?\n");
scanf("%s", input);
if (strcmp(name, input) == 0)
printf("Your name is %s good job!\n", name);
else
printf("Are you sure? Open the program again and insert the correct name\n");
return 0;
}
Die while(1)
am Ende Ihres Codes ist absolut gefährlich, weil es eine Endlosschleife beginnt, die nie endet, stürzt Ihr Programm ab. Sie möchten es definitiv entfernen!
Sie müssen Speicher für die Eingabe zuweisen - werfen Sie einen Blick auf malloc; Um Strings zu vergleichen, können Sie somethink wie strcmp verwenden. –
Auch "&' before 'input' und' name' werden los. Sie sind bereits Zeiger. – itsme86
könnte einer von Ihnen mir ein Beispiel geben, wie ich den Code richtig schreiben könnte? –