Avatar billede xhofa Nybegynder
27. maj 2003 - 11:55 Der er 11 kommentarer og
1 løsning

uppercase æ ø å

tjae, jeg sidder og leger lidt med C, og prøver så lidt forskellige cmds af.

og fandt ud af ved hjælp af uppercase/lowercase kunne man få det hele til at blive skrevet med stort eller småt.

men dette virker ikke med æ ø å, det er ikke noget der er dødsens vigtig der her, men skriv endelig hvis i lige kan give mig et prej om hvad man skal gøre.


koden ser sådan ud pt;

int main()
{
    char uppercase[80];
    printf("indtast en streng: \n");
    gets(uppercase);
    strupr(uppercase);
    printf("%s\n", uppercase);
    return 0;
}

//xhofa
Avatar billede borrisholt Novice
27. maj 2003 - 11:58 #1
Der findes i windows en funktion der hedder CharUpperBuff der kan.

Jens B
Avatar billede razor Nybegynder
27. maj 2003 - 12:15 #2
Kan det være din locale config der er noget i vejen med?
Avatar billede xhofa Nybegynder
27. maj 2003 - 12:22 #3
øhm, hvordan kan man anvende denne CharUpperBuff i mit "program"?
Avatar billede segmose Nybegynder
27. maj 2003 - 13:25 #4
xhofa
Prøv at indtaste mere end 80 tegn og se hvad der så sker.

ps. gets er meget farligt at bruge pga. bufferoverflows.

(spoiler: programmet går i de fleste tilfælde ned).
Avatar billede xhofa Nybegynder
27. maj 2003 - 13:49 #5
det er jeg godt klar over segmose, men det har jo ikke noget som helst med det jeg spørger om, har det?
Avatar billede arne_v Ekspert
27. maj 2003 - 15:13 #6
toupper erklæret i ctype.h er ANSI C (i modsætning til strupr)
og man bør derfor bruge den.

Eksempel:

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main()
{
    int i;
    char uppercase[80];
    printf("indtast en streng: \n");
    gets(uppercase);
    for(i=0;i<strlen(uppercase);i++) uppercase[i]=toupper(uppercase[i]);
    printf("%s\n", uppercase);
    return 0;
}

Men den virker nu ikke altid med ÆØÅ alligevel.

:-(

Det blev jeg så irriteret over i 1995 at jeg skrev følgende
(for ISO-8859-1).

intctype.h
----------

#ifdef islower
#undef islower
#endif
#ifdef _islower
#undef _islower
#endif
#ifdef isupper
#undef isupper
#endif
#ifdef _isupper
#undef _isupper
#endif

#define islower(c) inter_islower(c)
#define _islower(c) inter_islower(c)
#define isupper(c) inter_isupper(c)
#define _isupper(c) inter_isupper(c)

#ifdef tolower
#undef tolower
#endif
#ifdef _tolower
#undef _tolower
#endif
#ifdef toupper
#undef toupper
#endif
#ifdef _toupper
#undef _toupper
#endif

#define tolower(c) inter_tolower(c)
#define _tolower(c) inter_tolower(c)
#define toupper(c) inter_toupper(c)
#define _toupper(c) inter_toupper(c)

int inter_islower(int c);
int inter_isupper(int c);
int inter_tolower(int c);
int inter_toupper(int c);

intctype.c
----------

#include <ctype.h>

int inter_islower(int c)
{
  int clow;
  if ( ( (c>=224) && (c<=253) ) ||
        ( (c>=-32) && (c<=-3) ) ) {
      clow=2;
  } else {
      clow=islower(c);
  }
  return clow;
}

int inter_isupper(int c)
{
  int cupp;
  if ( ( (c>=192) && (c<=221) ) ||
        ( (c>=-64) && (c<=-35) ) ) {
      cupp=2;
  } else {
      cupp=isupper(c);
  }
  return cupp;
}

int inter_tolower(int c)
{
  int clow;
  if ( ( (c>=192) && (c<=221) ) ||
        ( (c>=-64) && (c<=-35) ) ) {
      clow=c+32;
  } else {
      clow=tolower(c);
  }
  return clow;
}

int inter_toupper(int c)
{
  int cupp;
  if ( ( (c>=224) && (c<=253) ) ||
        ( (c>=-32) && (c<=-3) ) ) {
      cupp=c-32;
  } else {
      cupp=toupper(c);
  }
  return cupp;
}
Avatar billede segmose Nybegynder
27. maj 2003 - 17:55 #7
Hvad gør de negative cases her, er det for signed char?
Avatar billede arne_v Ekspert
27. maj 2003 - 20:04 #8
Ja.

Hvis jeg husker rigtigt er char default signed (hvilket iøvrigt
altid har irriteret mig).
Avatar billede segmose Nybegynder
28. maj 2003 - 08:30 #9
char er implementation defined, under alle omstændigheder er der bare for dumt, det skulle ganske rigtigt være unsigned. Men grundene er indlysende der var i forvejen en stor base der brugte signed så komiteen kunne ikke få alle medlemmerne til at stemme for signed.
Avatar billede arne_v Ekspert
15. juni 2003 - 18:44 #10
xhofa>

Har du fået et svar du kunne bruge ?
Avatar billede arne_v Ekspert
24. juni 2003 - 21:11 #11
??
Avatar billede arne_v Ekspert
11. juli 2003 - 19:22 #12
??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester