Gå til innhold

ÆØÅ fungerer ikke


Anbefalte innlegg

Videoannonse
Annonse

Det er som nevnt tegnsettet som er feil:

 

#include <windows.h>
#include <stdio.h>


int main(int argc, char *argv[], char *envp[] )
{
   const char* ansi = "æ, ø, å, Æ, Ø Å";
   char* oemStr = malloc(strlen(ansi) + 1);

   printf("ansi: %s\n", ansi);
   
   CharToOemA(ansi, oemStr);
   printf("oem:  %s\n", oemStr);
   fflush(stdout);

   free(oemStr);
}

 

Edit: eksemplet er for Windows

Endret av kjetil7
Lenke til kommentar
Det er som nevnt tegnsettet som er feil:

 

#include <windows.h>
#include <stdio.h>


int main(int argc, char *argv[], char *envp[] )
{
   const char* ansi = "æ, ø, å, Æ, Ø Å";
   char* oemStr = malloc(strlen(ansi) + 1);

   printf("ansi: %s\n", ansi);
   
   CharToOemA(ansi, oemStr);
   printf("oem:  %s\n", oemStr);
   fflush(stdout);

   free(oemStr);
}

 

Edit: eksemplet er for Windows

7511886[/snapback]

 

 

 

 

 

Takk for svaret, men jeg kom ikke helt i mål, kan du/dere hjelpe med resten?

 

 

 

Hvor hentet du dette fra, jeg får syntaksfeil (jeg måtte komentere bort linjen)?

CharToOemA(ansi, oemStr);

 

 

JEG FÅR ADVARSEL NÅR JEG KOMPILERER RESTEN AV PROGRAMMET:

bash-2.02$ gcc -g -o forum forum.c

forum.c: In function `main':

forum.c:19: warning: initialization makes pointer from integer without a cast

/cygnus/cygwin-b20/H-i586-cygwin32/i586-cygwin32/bin/ld: cannot open output file

forum.exe: Permission denied

collect2: ld returned 1 exit status

bash-2.02$

 

 

 

HER ER UTSKRIFTEN NÅR JEG KJØRER PROGRAMMET:

ansi: µ, °, Õ, ã, Ï, ┼

oem: ê&♠aê&♠a

 

 

Hva er feil?

Lenke til kommentar
Takk for svaret, men jeg kom ikke helt i mål, kan du/dere hjelpe med resten?

 

Hvor hentet du dette fra, jeg får syntaksfeil (jeg måtte komentere bort linjen)?

CharToOemA(ansi, oemStr);

 

HER ER UTSKRIFTEN NÅR JEG KJØRER PROGRAMMET:

ansi: µ, °, Õ, ã, Ï, ┼

oem: ê&♠aê&♠a

 

Hva er feil?

7523339[/snapback]

 

CharToOem er en funksjon som oversetter en string fra ANSI til OEM'et du kjører på (cmd.exe sitt charset).

 

Hvis du kommenterer den ut er hele poenget borte.

 

Testet koden som ble postet og den funker helt fint. En ting er vel at du bør caste til char* når du malloc'er.

 

Hvis du får syntax error på CharToOem linjen har du enten glemt å include windows.h eller så er det en feil i include_pathen din til compileren.

 

int main(int argc, char* argv[])
{
const char* ansi = "æ, ø, å, Æ, Ø Å";
char* oemStr = (char*)malloc(strlen(ansi) + 1);

printf("ansi: %s\n", ansi);
   
CharToOemA(ansi, oemStr);
printf("oem:  %s\n", oemStr);
fflush(stdout);

free(oemStr);
return 0;
}

Endret av Fangs78
Lenke til kommentar
  • 3 uker senere...

Eg erstatter bokstavene med desse tegna:

 

æ = \x91

ø = \x9b

å = \x86

Æ = \x92

Ø = \x9d

Å = \x8f

 

Lager først programmet, og så bruker eg "Søk og erstatt" funksjonen. Dei fleste editorer og tekstredigeringsprogram har denne funksjonen.

Bruker Dev-cpp (Ctrl + R). I notepad er det Ctrl + H. Ellers kan du finne den ut med å se opp oppgavelinjen i den editoren du bruker.

Dette funker heilt fint for meg.

Endret av gamma48
Lenke til kommentar

Den riktige måten å gjøre dette på er å bruke API-funksjonen CharToOem som vist over. Det du gjør kan betraktes som et hack.

 

Koden fungerer fint og kompilerer i både Visual C++ og GCC. Siden det her var et C-program regner jeg med at du lagrer kildekodefilen med *.c -endelse. Du trenger heller ikke en typecast fra malloc siden dette er C, og ikke C++.

 

Eksempel på kompilering av CharToOem.c med GCC:

 

gcc -Wall CharToOem.c -o CharToOem

 

Output:

ansi: µ, °, Õ, ã, Ï ┼
oem:  æ, ø, å, Æ, Ø Å

Lenke til kommentar

mmm

 

Vet dette kan være litt vanskelig å svelge ... men gode gammeldagse dos konsoll program, er kun for eksempler, test, opplæring.

 

Dette er fordi det med char set er så ymse på ymse platformer, og da kommer man ofte opp i konflikter her og der. Men C++ erjo laget for å benytte alskens biblioteker, og det blir jo det som er steget etter at man har pløyd de første par c++ bøkene...

 

hater det rotet med char set selv ....

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...