Hallo,
Wie kann man abfragen, ob in einem char array nur eine bestimmte anzahl von buchstaben enthalten ist=?
Hallo Fragewurm,
Wie kann man abfragen, ob in einem char array nur eine
bestimmte anzahl von buchstaben enthalten ist=?
Meinst du jetzt Zeichen [strlen()] oder sollen nur die Buchstaben ['a…‚z‘ und ‚A‘…‚Z‘] gezählt werden?
Oder willst du etwas ganz anderes?
MfG Peter(TOO)
Hallo,
Wie kann man abfragen, ob in einem char array nur eine
bestimmte anzahl von buchstaben enthalten ist=?
Deine Frage ist mehrdeutig formuliert, kannst Du
das verständlich an einem Beispieldarlegen -
was Du genau machen möchtest?
Grüße
CMБ
Ich möchte ein Programm schreiben, das mich französischvokabeln abfragt.
Das habe ich jetzt auch fast geschafft, das sieht in etwa so aus:
printf(„m%cnnliche form von ‚kanadisch‘:“, ae);
scanf("%s", Vokabel);
if(( Vokabel[0] == 99) && ( Vokabel[1] == 97) && ( Vokabel[2] == 110) && ( Vokabel[3] == 97) && ( Vokabel[4] == 100) && ( Vokabel[5] == 105) && ( Vokabel[6] == 101) && ( Vokabel[7] == 110))
{
printf(„Richtig!\n\n\n\n“);
vp++;
}
wer französisch hatte weiß aber, das man jetzt genauso gut die weibliche form von Kanadisch, nämlich canadienne eingeben könnte, da ja nur überprüftwird, ob die ersten zeichen „canadien“ enthalten.
Hallo
Ich möchte ein Programm schreiben, das mich
französischvokabeln abfragt.
Das habe ich jetzt auch fast geschafft, das sieht in etwa so
aus:wer französisch hatte weiß aber, das man jetzt genauso gut die
weibliche form von Kanadisch, nämlich canadienne eingeben
könnte, da ja nur überprüftwird, ob die ersten zeichen
„canadien“ enthalten.
Aha.
Ich denke mal, C ist eine der „ungünstigsten“
Programmiersprachen überhaupt, um so etwas
zu machen. Hier würde ich unbedingt eine
„Hoch Ebene“-Programmiersprache wie
Javascript, Perl, oder - wenn’s unbedingt
sein muß - auch Ruby oder Python nehmen.
Dort ist das ziemlich einfach zu machen.
(Reguläre Ausdrücke zur Textbewertung).
Grüße
CMБ
Ich glaube mit der Funktion strcmp() lässt sich das ganze besser lösen:
printf("Wie heißt .... ?\n");
char vokabel[256];
scanf("%s", vokabel);
if(!strcmp(vokabel, "richtigelösung"))
{
printf("richtig\n");
}
else
{
printf("falsch\n");
}
strcmp() vergleicht zwei Strings (char arrays) miteinander und gibt bei Gleichheit 0 zurück. Für mehr Informationen einfach googlen.
mfg dixxi
Hallo
wer französisch hatte weiß aber, das man jetzt genauso
gut die weibliche form von Kanadisch, nämlich
canadienne eingeben könnte, da ja nur überprüftwird,
ob die ersten zeichen „canadien“ enthalten.
// "canadien"
bool passt(const char \*ausListe, const char \* eingabe)
{
return (strstr(ausListe, // suchen in
eingabe) == // welches Token
ausListe);
// == true bedeutet, das Token findet sich zu Beginn
}
Bei Erfolg gibt die strstr() den char-Zeiger zurück, wo sie das Token gefunden hat.
C ist in der Tat nicht die Sprache, die sich für Text direkt aufdrängt, um es mal höflich zu sagen. Man muss sich erst eine eigene Lib dafür schreiben, damit das erträglich wird.
lG
Martin B
So, danke ertsmal an dixxi, mit strcmp funktioniert es, aber es ht sich ein neues Problem aufgetan, und zwar meint mein compiler, dass wenn man jetzt „Québec“ eingibt, das das nicht gleich „Québec“ ist, was an dem é liegen muss, da es wenn keine Umlaute enthalten sind, ja funktioniert … weiß jemand, wie ich das problem löse?
printf("‚Quebec‘:");
scanf("%s", Vokabel);
if(strcmp (Vokabel, „Québec“) == 0)
{
printf(„Richtig!\n\n\n\n“);
vp++;
}
else
{
printf(„Falsch!\nRichtig ist ‚Qu%cbec‘!\n\n\n\n“, ea);
vn++;
}
…wenn keine Umlaute enthalten sind, ja funktioniert …
Umlaute sind soweit ich weiß nicht Teil des ASCII Codes und teileweise auch nicht des ANSI Codes, der ja verwendet wird um festzulegen welches Zeichen ein char jetzt ist.
Ich weiß nicht ob das dein Problem lösen könnte, aber du könntest auf Unicode umsteigen. Dann benötigst du aber den Datentyp wchar (oder wchar_t) und die entsprechenden Unicode Synonyme deiner Stringfunktionen.
int wcscmp(
const wchar\_t \*string1,
const wchar\_t \*string2
);
Sollte das glaube ich sein. Wie man einen wchar_t jetzt aber ausgibt (ob das mit printf funktioniert) weiß ich leider selber nicht. Ich habe noch nie mit Unicode gearbeitet.
Dann hättest du zumindest Unterstützung fir alle möglichen druckbaren Zeichen.
Ich hoffe, dass du mit dem Ansatz was anfangen kannst.
mfg dixxi
die Umlaute sind schon im ASCII, sie sind nur nicht im Bereich von -128-127, weswegen man vokabel als unsigned char deklarieren muss, da zb „é“ nummer 130 ist, und man durch das unsigned ja bewirkt, das der bereich von-128-127 auf 0-255 erweitert wird…
Man könnte jetzt natürlich für jedes einzelne element der variable testen, welches zeichen darin gespeichert ist,
if( vokabel[3]== 130)
{
printf(„der vierte Buchstage ist ein é !“)
}
aber das wäre ziemlich viel schreibarbeit, und danach müsste man noch prüfen, wie lang das wort ist… ich weiß also schon, das umlaute im ASCII vorhanden sind, ich weiß nur noch nicht, wie ich diese information in strcmp einbauen soll =D