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