r2d290 Skrevet 12. desember 2006 Skrevet 12. desember 2006 Hallo. Mitt lille c-dataprogram ber om input og bruker æ,ø og å, men jeg får ikke ut æøå på skjermen. hva kan/må jeg gjøre for å få til dette? Takk
r2d290 Skrevet 14. desember 2006 Forfatter Skrevet 14. desember 2006 ingen som kan hjelpe meg med dette problemet?
Dead_Rabbit Skrevet 14. desember 2006 Skrevet 14. desember 2006 Vil tro dette avhenger av hvilken terminal og hvilket tegnsett du bruker. Litt usikker...
kjetil7 Skrevet 15. desember 2006 Skrevet 15. desember 2006 (endret) 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 15. desember 2006 av kjetil7
r2d290 Skrevet 17. desember 2006 Forfatter Skrevet 17. desember 2006 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?
Dead_Rabbit Skrevet 17. desember 2006 Skrevet 17. desember 2006 Linker feilen du får, tror jeg kan være et resultat av at du kjører programmet mens du kompilerer. Dette kan ihvertfall føre til at linkeren ikke kan "open output file". Det er den eneste feilen når du kompilerer der ihvertfall. Du får riktignok en warning, men dette er ikke en error.
Fangs78 Skrevet 20. desember 2006 Skrevet 20. desember 2006 (endret) woops...her skjedde det noe meget rart. Endret 20. desember 2006 av Fangs78
Fangs78 Skrevet 20. desember 2006 Skrevet 20. desember 2006 (endret) 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 20. desember 2006 av Fangs78
gamma48 Skrevet 6. januar 2007 Skrevet 6. januar 2007 (endret) 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 6. januar 2007 av gamma48
kjetil7 Skrevet 8. januar 2007 Skrevet 8. januar 2007 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: æ, ø, å, Æ, Ø Å
DarkSlayer Skrevet 9. januar 2007 Skrevet 9. januar 2007 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 ....
Lednar Skrevet 16. januar 2007 Skrevet 16. januar 2007 Jeg erstatter ordene med dette æ = ‘ ø = › å = † Æ = ’ Ø = Å = Funker uten problemer
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå