Avatar billede raulg Nybegynder
07. februar 2004 - 17:00 Der er 14 kommentarer og
1 løsning

Hvordan konverterer man en integer til en char i c?

Denne kode virker ikke:


char *test = ("bla bla %s", (char*) test2);

den kompiler fint men kører ikke.
Avatar billede arne_v Ekspert
07. februar 2004 - 18:10 #1
int test2 = 123;
char test[100];
sprintf(test,"bla bla %d",test2);

var ihvertfald en løsning.
Avatar billede arne_v Ekspert
07. februar 2004 - 18:11 #2
Jeg har iøvrigt skrevet en lille artikel om konvertering mellem forskellige
typer.

Måske værd at læse.
Avatar billede raulg Nybegynder
07. februar 2004 - 18:59 #3
det virker ikke. hvor er den artikkel henne?
Avatar billede arne_v Ekspert
07. februar 2004 - 19:19 #4
Det skal virke.

regulær standard C som har virket de sidste 20 år
Avatar billede arne_v Ekspert
07. februar 2004 - 19:20 #5
http://www.eksperten.dk/artikler/143

(koster 5 point at læse - der står ikke mere om int -> char array
end jeg allerede har skrevet, men der er mange andre konverteringer)
Avatar billede arne_v Ekspert
07. februar 2004 - 19:21 #6
Hvis du uddybede "det virker ikke" kunne jeg måske sige hvor vi har snakket
forbi hinanden.
Avatar billede coldplay Nybegynder
07. februar 2004 - 23:34 #7
#include <conio.h>

    char *test1 = "bla bla %s";
    char *test2 = "test";
    char *test = ((char *) test1, (char *) test2);
    char chr = test[1];
    printf("%c", chr);
    getch();
Avatar billede coldplay Nybegynder
07. februar 2004 - 23:54 #8
#include <conio.h>

    char *test2 = "test";
    char *test = ((char *) test2);
    char chr = test[1];
    printf("%c", chr);
    getch();
Avatar billede arne_v Ekspert
08. februar 2004 - 09:16 #9
Den sidste koder svarer til:

char *test2 = "test";
char chr = test2[1];

og fisker det andet bogstav 'e' ud af "test", men det var ihvertfald ike sådan jeg
læste spørgsmåket...
Avatar billede coldplay Nybegynder
08. februar 2004 - 13:09 #10
Hensigten var blot at konstatere hvad char pointeren test tildeles, når:

char *test = ((char *) test1, (char *) test2)

Det er åbenbart test2.
Avatar billede arne_v Ekspert
08. februar 2004 - 13:22 #11
Ja.

Men kun p.g.a. de ekstra parenteser (komma operatoren har den laveste
precedens af alle).

#include <stdio.h>

int main()
{
  int v;
  v = 1,2;
  printf("%d\n",v);
  v = (1,2);
  printf("%d\n",v);
  return 0;
}

udskriver:

1
2
Avatar billede arne_v Ekspert
08. februar 2004 - 13:23 #12
Komma operatoren er efter min bedste mening et misfoster og et eksempel på
C når det er værst.
Avatar billede coldplay Nybegynder
08. februar 2004 - 14:19 #13
For v = 1,2 har 1 åbenbart højeste precedens og for v = (1,2) er det 2.

Ganske lærerigt...
Avatar billede arne_v Ekspert
08. februar 2004 - 14:30 #14
Jeg ville udtrykke det som at = har højere precedens end , og at v=1,2 derfor
svarer til (v=1),2 men ja.
Avatar billede coldplay Nybegynder
08. februar 2004 - 23:20 #15
Du har ret. Ingen yderligere kommentarer.
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