Ich habe ein Problem mit der Tolower-Funktion. Versucht, es mit argv zu verwenden, aber die Ausgabe war $ 0 @. Was ist falsch an meinem Code?Falsche Ausgabe von der Tolower-Funktion
#include <stdlib.h>
#include <stdio.h>
void makeLower(char *s) {
int i;
for(i = 0; s[i] != '\0'; i++){
s[i] = tolower(s[i]);
}
printf("%s", s);
}
int main(int argc, char *argv[]) {
argv[0]="A";
makeLower(argv);
return 0;
}
Sie können nicht zuverlässig in Zeichenfolgenliterale schreiben; Sie rufen ein undefiniertes Verhalten auf, wenn Sie dies tun. Ändere das 'main()' in 'int main (void) {char str [] =" A "; makeLower (str); zurückgeben 0; } 'zum Beispiel. Sie sollten dem 'printf()' eine neue Zeile hinzufügen; Sie sollten wahrscheinlich in der 'main()' -Funktion anstelle der (nicht mehr allgemeinen) Dienstprogrammfunktion drucken. Technisch sollten Sie ein 'int' übergeben, das entweder ein' unsigned char' oder EOF zu 'tolower()' enthält (normalerweise erreicht durch 'tolower ((unsigned char) s [i])'). Sie werden jedoch kein Problem mit "A" bekommen. –
Vielleicht ist dein Missverständnis bereits, dass du versuchst, 'argv [0] 'etwas zuzuordnen. Diese sollten Informationen aus Ihrer Umgebung enthalten, insbesondere sollte 'argv [0]' der Name Ihres kompilierten Programms sein. Wenn Sie es einfach ohne die Zuweisung zu "A" ausführen, dann sollten alle Zeichenfolgen, auf die "argv" verweist, geändert werden. –