cybercrow
05-12-2001, 20:03
Hi,
ich wollte gerade ein kleines C Programm schreiben, welches einen Satz einliest, alle Satz- Leerzeichen entfernt und ihn dann wieder ausgibt.
Das Programm läuft Problemlos, wenn man "normale" Sätze eingibt. Wenn man aber Sätz mit mehreren Leer- Satzzeichen hintereinander eingibt wird nur jedes zweite entfern (Bsp: Wenn ich ?!? eingebe wird ! noch ausgegeben).
Hier mein Programm:
#include <stdio.h>
#include <string.h>
int main()
{
char satz[80];
int laenge, i, j;
printf("\nGeben Sie einen Satz ein:\n>");
fgets(satz, sizeof(satz), stdin);
if(satz[strlen(satz)-1]=='\n')
satz[strlen(satz)-1]=='\0';
laenge = strlen(satz);
for(i=0; i<=laenge; i++) {
if(satz[i]==' ' || satz[i]=='.' || satz[i]==',' || satz[i]=='!' || satz[i]=='?') {
laenge--;
for(j=i; j<=laenge; j++)
satz[j] = satz[j+1];
}
}
printf("\n%s\n", satz);
return 0;
}
Es wird wahrscheinlich irgendwas in der for Schleife nicht richtig laufen. Ich komme aber nicht drauf, wo das Problem liegt.
Kann mir jemand auf die Sprünge helfen?
Danke!
ich wollte gerade ein kleines C Programm schreiben, welches einen Satz einliest, alle Satz- Leerzeichen entfernt und ihn dann wieder ausgibt.
Das Programm läuft Problemlos, wenn man "normale" Sätze eingibt. Wenn man aber Sätz mit mehreren Leer- Satzzeichen hintereinander eingibt wird nur jedes zweite entfern (Bsp: Wenn ich ?!? eingebe wird ! noch ausgegeben).
Hier mein Programm:
#include <stdio.h>
#include <string.h>
int main()
{
char satz[80];
int laenge, i, j;
printf("\nGeben Sie einen Satz ein:\n>");
fgets(satz, sizeof(satz), stdin);
if(satz[strlen(satz)-1]=='\n')
satz[strlen(satz)-1]=='\0';
laenge = strlen(satz);
for(i=0; i<=laenge; i++) {
if(satz[i]==' ' || satz[i]=='.' || satz[i]==',' || satz[i]=='!' || satz[i]=='?') {
laenge--;
for(j=i; j<=laenge; j++)
satz[j] = satz[j+1];
}
}
printf("\n%s\n", satz);
return 0;
}
Es wird wahrscheinlich irgendwas in der for Schleife nicht richtig laufen. Ich komme aber nicht drauf, wo das Problem liegt.
Kann mir jemand auf die Sprünge helfen?
Danke!