letztes zeichen in einem string ermitteln
-
Haette da noch ne Frage.
Der User gibt einen String ein
Bsp.ikhohgpougevoWie kann ich nun das letzte Zeichen des Strings ermitteln?
Also in dem Fall das o
-
str[strlen(str)-1]
(strlen() bestimmt die Länge des Strings, mit str[länge-1] kommst du zum letzten Zeichen)
-
hmm
wenn ich aber nunr nen string mit 80 char definier
die eingabe in de string einles, sind ja die zeichen bis auf das letzt leer
das vorletzte ist ja dann ein leerzeichen.moechte aber das letzte zeichen, die leerzeichen hinten nicht, oder kann ich irgenwie den string ab den leerzeichen abschneiden?
-
Die meisten Eingabefunktionen (und alles, was in Standard-C mit Strings arbeitet) setzen an das tatsächliche Ende des Strings ein '\0'-Zeichen als Ende-Markierung - und strlen() zählt auch nur bis zu dieser Markierung:
char str[80]="Hallo, Nachbar.";//enthält 'H','a',...'r','.','\0' printf("Länge:%d\n",strlen(str));//-> Ausgabe 15 printf("Größe:%d\n",sizeof(str));//-> Ausgabe 80 printf("letzte:%c",str[strlen(str)-1]);//-> Ausgabe .
-
muell geschrieben -.-
also das was ich meinte war:
ich les die eingabe in einen string mit 80 char ein
ist die eingabe nun: ivgiogiougi
ist ja hinter dem i alles mit leerzeichen gefuellt, bis auf das letzte zeichen halt wiederwie ermittle ich nun das i
wobei die eingabe natuerlich variabel sein kannbei str[strlen(str)-1] muesste ich ja dann ein lerzeichen erhalten.
-
funktioniert, danke
-
ok, muss doch nochmal wiederrufen
printf("\nLast:%c",inputline[strlen(inputline)-1]);
Ausgabe Last:
inputline ist hierbei mein strin aus 89char dem ich mit
fgets(inputline,80,stdin);
die eingabe zuweisalso scheinr er doch dann das 79ste zeichen auszugeben, was ein leerzeichen ist
-
boogiegirl schrieb:
ok, muss doch nochmal wiederrufen
printf("\nLast:%c",inputline[strlen(inputline)-1]);
Ausgabe Last:
inputline ist hierbei mein strin aus 89char dem ich mit
fgets(inputline,80,stdin);
die eingabe zuweisalso scheinr er doch dann das 79ste zeichen auszugeben, was ein leerzeichen ist
Nein, er gibt einen Zeilenumbruch aus, da fgets() am Ende der Eingabe einen Zeilenumbruch (\n) anfügt.
-
mit der funktion solltest du die umbrueche am ende von strings gut wegschneiden koennen.
int rtrim(char *str) { int i = strlen(str); if (i > 0) while (i-- && (str[i] == '\n' || str[i] == '\r')) str[i] = 0; return 0; }