Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit ascii
sven1978
12-01-2003, 16:31
Ich habe einen satz eingelesen und will nun zaehlen wieviele Buchstaben enthalten sind. Tut aber nicht und weiss net wieso.
zb: Bei Eingabe "hallo" müsste ja das ergebniss 4 sein kommt aber 10
Quelltext:
int anzahl_buchstaben(char satz[100]){
int i,a=0;
for (i=0;i<=100;i++) {
if ((satz[i]>=65&&satz[i]<=90 || satz[i]>=97&&satz[i]<=122)&& satz[i] != '\0')
a++; }
return a;
}
tkortkamp
12-01-2003, 16:48
Was spricht gegen strlen?
int anzahl_buchstaben(char satz[100])
{
return strlen(satz)
}
Aber du möchtest ja überprüfen, wieviel Buchstaben, d.h. ohne Sonderzeichen oder so, im String vorkommen, versteh ich das richtig?
Um zu überprüfen ob ein Zeichen ein Buchstabe ist, gibt es isalpha()
int anzahl_buchstaben(char satz[100])
{
int retval = 0, i;
for(i = 0; i <= 100; i++)
if(isalpha(satz[i]))
retval++;
return retval;
}
Und dann noch ohne Beschränkung der Größe des Strings:
int anzahl_buchstaben(char *satz)
{
int retval = 0, i;
for(i = 0; i <= strlen(satz); i++)
if(isalpha(satz[i]))
retval++;
return retval;
}
c ya,
Tobias
sven1978
12-01-2003, 16:55
Super echt gute loesungen.
anda_skoa
12-01-2003, 16:57
nicht <= nur < in den Schleifenbedingungen mit 100.
Bei strlen ist es noch ok, da wird der \0 nicht gezählt, also ist der Index noch gültig.
Aber besser wäre auch hier < zu nehmen.
Ciao,
_
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.