Hilfe bei Strings in C

hidiho

Grünschnabel
hallo
ich hab gerade in der schule c dran, und wir behandeln gerade strings

so nun zu meinem problem:
ich so ein programm schreiben das einen satz einliese und anschließend ohne satzzeichen und leerzeichen wieder ausgibt.
im 2. teil soll das programm den eingegebenen satz so ausgeben das jedes wort auf einer eigenen zeile steht, die begrenzung der worte erfolgt durch die leer zeichen

ich hoffe ihr könnt mir helfen, weil ich hab im mom echt kein plan mehr
 
Hi, willkommen im Forum.

Zuerst mal ein kleiner Hinweis: Halte Dich hier bitte an Gross- und Kleinschreibung.

Nun zum Thema: Wenn Du mittels scanf("%s\n",&buffer); zeilenweise einliest, dann werden dort automatisch die Leerzeichen uebergangen.
Weiter kann ich Dir im Moment aber auch erstmal nicht helfen.

Du kannst ja auch mal einen Blick auf diese Seite werfen, da findest Du auch einiges an Informationen.
 
Moin moin,

leg dir nen zweiten char Array(Zielstring) an, der etwas grösser ist als das maximal einzugebende.

1)
dann gehste du in ner Schleife vom Anfang bis zum Ende durch den eingegebenen String und kopierst das Zeichen des eingegebenen Strings in denn Ziel String wenn es kein Satzzeichen oder Leerzeichen ist.
2)
wie in 1) aber diesmal schreibst du bei einem Leerzeichen ein '\n' in den Zielstring.

dann gibst du den Zielstring aus.

Halt dich bitte beim nächsten mal an die Netiquette und benutz die Gross und Kleinschreibung...

Gruss Michael
 
Edit:
Wie kann ich das mit dem Satzzeichen kurz zusammenfassen oder muss ich jedes Zeichen einzeln festlegen ?
 
Zuletzt bearbeitet:
Da die Satzzeichen nicht alle hintereinander stehen musst du jedes einzeln filtern.
Schau dir mal die Asci-Tabelle an. Sollten die Zeichen die dich interessieren doch hintereinander sein, dann kann man mit > < nen Bereich festlegen. Char's sind ja nur Zahlen.
 
Hi.
hidiho hat gesagt.:
Edit:
Wie kann ich das mit dem Satzzeichen kurz zusammenfassen oder muss ich jedes Zeichen einzeln festlegen ?
Du kannst die Satzzeichen einfach in einen String speichern:
Code:
const char* satzzeichen = ".,;?!";
Um dann herauszufinden ob ein eingegebenes Zeichen ein Satzzeichen ist, könntest du die Funktion strchr verwenden:
Code:
#include <string.h>

char* eingabe = ...;
int pos = ...;
if (strchr(satzzeichen, eingabe[pos]) != NULL)
  /* Zeichen eingabe[pos] ist ein Satzzeichen. */
  ...

/edit: Ach, mir fällt ja gerade ein, du könntest natürlich auch einfach die Funktion int ispunct(int c) benutzen:
Code:
#include <ctype.h>

if (ispunct(eingabe[pos])) ...

/edit2: Allerdings gibt ispunct auch true für Klammern, größer-als-, kleiner-als-Zeichen zurück.

Gruß
 
Zuletzt bearbeitet:
Zurück