Dorte Klerke skrev:
>Jeg har nedenstående funktion i mit hangman spil, jeg er ved at lave, men
>hvordan får jeg den til at tjekke de danske bogstaver, der har koderne:
Velkommen til The Wonderful World of Computing with Danish
Letters, vol. 2893 chapter 198.
>\x9B = ø
>\x9D = Ø
>\x91 = æ
>\x92 = Æ
>\x86 = å
>\x8F = Å
Du render ind i at de indbyggede funktioner går ud fra at æ, ø og
å *ikke* er bogstaver. Måske er der noget med at man kan
indstille C til at være dansk, men det har jeg ikke prøvet (det
er vist noget med locale).
> char a=toupper(Get1Char());
Den 'upper' ikke æøå.
> else if(!isalpha(a) || !strchr(spil.alfabet,a))
Og isalpha() siger nej til dem.
Selv bruger jeg konstante værdier. Ofte sammensætter jeg mit eget
alfabet:
const char alfabet="ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ";
og bruger noget med: if (strchr(alfabet,tegn)) printf("Hurra!");
Det kan kombineres med en anden streng med små bogstaver, og så
kan upper omskrives til
char *pos;
if (strchr(alfabet_lille,tegn)) {
pos=strchr(alfabet_lille,tegn);
tegn=*(alfabet_stor+(pos-alfabet_lille));
}
Det kan også laves med nummerering i stedet for en pointer. En
switch-ckonstruktion kan også klare det. Den fylder meget i
koden, men den kører effektivt.
switch (tegn) {
case 'a': return 'A';
case 'b': return 'B';
osv.
>Desuden: Hvis jeg bruger koderne for danske bogstaver i windows, men så
>senere compiler på en unix server, sker der så en ændring, altså kan unix
>også forstå koderne for æøå?
Jeg ved ikke så meget om Unix.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO:
http://fiduso.dk/