I
Mal die C Funktionen:
isalnum() pruft auf alphanumerische Zeichen, es ist aquivalent zu (isalpha(c) || isdigit(c)).
isalpha() pruft auf Buchstaben, in der standard "C" Spracherweiterung ist es aquivalent zu (isupper(c) || islower(c)). In anderen Spracherweiterungen konnen weitere Zeichen sein, fur die isalpha() wahr ist - Zeichen, die weder GroB- noch Kleinbuchstaben sind.
iscntrl() pruft auf Kontrollzeichen.
isdigit() pruft auf Ziffern ab.
isgraph() pruft auf druckbare Zeichen auBer Leerzeichen ab.
islower() pruft, ob c ein Kleinbuchstabe ist.
isprint() pruft auf druckbare Zeichen inklusive Leerzeichen ab.
ispunct() pruft auf druckbare Zeichen, das kein Leerzeichen und kein alphanumerisches Zeichen ist.
isspace() pruft auf Freizeichen. In den "C" and "POSIX" Spracherweiterung sind dies: Leerzeichen, Seitenvorschub ('\f'), Zeilenumbruch ('\n'), Carriage Return ('\r'), Horizontaler Tabulator ('\t'), und verticaler Tabulator ('\v'). isupper() pruft auf GroBbuchstaben ab.
isxdigit() pruft, ob c eine hexadezimales Ziffer ist, also eine von 0 1 2 3 4 5 6 7 8 9 0 a b c d e f A B C D E F.
In C++ ist das im std-namespace.
Was du machst ist einfach so lange einzulesen, wie ein Buchstabe kommt.
char* LesenDatei()
{
int iPos = 0; // Buchstabenposition
char cZeichen;
char Wort[100]; //Denk mal kein Wort ist länger als 100 Zeichen
int wPos = 0; //Position des Zeichen im Wort
while (datUrsprung.good()) // Liest Zeile bis zum Ende (EOF)
{
datUrsprung.seekg(iPos); // Buchstabenposition im Text
cZeichen = (char)datUrsprung.get();
if (isalpha(cZeichen)) { //Test ob es ein Buchstabe ist
wort[wPos] = cZeichen;
wPos++;
} else {
wort[wPos] = '\0'; // Daran erkennt man das Ende des Wortes
if (datUrsprung.good()) SchreibenDatei(Wort);
wPos = 0;
}
iPos ++; // Buchstabenposition um 1 erhöht
}
}
Musst natürlich noch deine SchreibenDatei() ändern.