Sie haben ein paar Fehler dort.
Sie möchten, dass der Benutzer ein "Wort", d. H. Eine Zeichenfolge, eingibt. Dann verwenden Sie nicht %c
, die nur ein Zeichen durchsucht, aber %s
statt, die eine Zeichenfolge durchsucht (beachten Sie, dass das bedeutet, dass der Benutzer gibt auch Leerzeichen oder mehr als 29 Zeichen).
Sie speichern über dem Array. Das Array wird erklärt, wie
char parola[30];
Das bedeutet, kann es mit den Werten 0 indiziert werden .. 29. Aber Ihre &parola[30]
Punkte über das Array (bei Index 30, der nicht "existieren"). Das ist nicht was du willst. Tun Sie dies:
scanf("%s", parola);
Und hoffe, dass der Benutzer nicht mehr als 29 Zeichen eingeben.
Die Länge der Zeichenfolge dann gefunden, lassen sich mit
c = strlen(parola);
So wird daraus:
@autoreleasepool {
char parola[30];
unsigned long c;
NSLog(@"Write word:");
scanf("%s", parola);
c = strlen(parola);
NSLog(@"The word has %ld letters", c);
}
return 0;
Statt NSLog, können Sie auch printf
verwenden können:
printf("Write word: ");
und
printf("The word has %ld letters\n", c);
die sauberen aussehen wird, wie NSLog()
immer diese zusätzliche Infos zeigt, wie
2017-06-04 12:37:25.758802+0200 SOTest[4718:2690388]
Und das ist, IMO, nur hässlich. Gut für ein Protokoll, aber nicht gut für eine saubere Bildschirmausgabe. Die Ausgabe wird jetzt:
Ich denke, Sie werden ein besseres Glück mit 'NSString' haben, da Sie mit Objective-C zu tun haben. – vitormm