/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
convertering af int[] til *char[]
Fra : gunter


Dato : 11-12-03 17:57

Er der i c ikke en smartere måde at konvertere et array af int til char*
end neden stående? Det bliver især trivielt vist man nu har et array
med hundrede elementer.

Jeg tænker især på linjerne inden for-lykken. Jeg ved ikke hvor store
int der er i ret[].

char test0[6];
char test1[6];
char test2[6];

char *test[3];
test[0]=test0;
test[1]=test1;
test[2]=test2;

for (i=0; i<3; i++) {
sprintf(test[i], "%i", ret[i]);
}


 
 
gunter (11-12-2003)
Kommentar
Fra : gunter


Dato : 11-12-03 19:26

OK nogle gang tænker man sig ikke lige om:

char test[3][6];
for (i=0; i<3; i++) {
sprintf(test[i], "%i", ret[i]);
}




Bertel Lund Hansen (11-12-2003)
Kommentar
Fra : Bertel Lund Hansen


Dato : 11-12-03 19:33

gunter skrev:

>Er der i c ikke en smartere måde at konvertere et array af int til char*
> end neden stående?

Jeg kan ikke lige gennemskue helt hvad du vil, men du behøver
ikke konvertere.

   int tabel[2000] = { et hav af tal }
   char *fidus;

   ...
   fidus=(char *) tabel;

Nu er fidus et array af char, og det starter præcis samme sted
som tabel.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Kristian Dupont (11-12-2003)
Kommentar
Fra : Kristian Dupont


Dato : 11-12-03 20:15

> Jeg kan ikke lige gennemskue helt hvad du vil, men du behøver
> ikke konvertere.
>
> int tabel[2000] = { et hav af tal }
> char *fidus;
>
> ...
> fidus=(char *) tabel;
>
> Nu er fidus et array af char, og det starter præcis samme sted
> som tabel.

Jeg kan heller ikke overskue hvad det er han forsøger, men er næsten sikker
på at dette forslag ikke er løsningen.
Typecasting fra int* til char* giver ganske rigtigt et array af chars, der
_begynder_ præcist det samme sted. Men eftersom en int på de fleste
platforme er 32 bit og char er 8, vil fidus i princippet være 8000 tal hvor
tabel kun er 2000. Hvis tallene i tabel ellers kan være i 8 bit vil man få
disse på hver fjerde plads i fidus.

Kristian



Byrial Jensen (11-12-2003)
Kommentar
Fra : Byrial Jensen


Dato : 11-12-03 21:09

Bertel Lund Hansen wrote:
> Jeg kan ikke lige gennemskue helt hvad du vil, men du behøver
> ikke konvertere.
>
>    int tabel[2000] = { et hav af tal }
>    char *fidus;
>
>    ...
>    fidus=(char *) tabel;
>
> Nu er fidus et array af char, og det starter præcis samme sted
> som tabel.

Operationen er lovlig, men jeg kan ikke se hvad man skulle bruge fidus
til. Man kommer vel ikke uden om en konvertering med for eksempel
snprintf() hvis der skal være noget praktisk formål.


gunter (12-12-2003)
Kommentar
Fra : gunter


Dato : 12-12-03 15:06

Bertel Lund Hansen wrote:
> gunter skrev:
>
>
>>Er der i c ikke en smartere måde at konvertere et array af int til char*
>> end neden stående?
>
>
> Jeg kan ikke lige gennemskue helt hvad du vil, men du behøver
> ikke konvertere.
Jeg vil bare konvertere et array af int til et array af char*
så jeg kan skrive dem til en fil;
men jeg har fået det til at virke

>
>    int tabel[2000] = { et hav af tal }
>    char *fidus;
>
>    ...
>    fidus=(char *) tabel;
>
> Nu er fidus et array af char, og det starter præcis samme sted
> som tabel.
>


Byrial Jensen (12-12-2003)
Kommentar
Fra : Byrial Jensen


Dato : 12-12-03 19:08

gunter wrote:
> Jeg vil bare konvertere et array af int til et array af char*
> så jeg kan skrive dem til en fil;

Hvorfor så ikke lave konverteringen med fprintf() når du skriver til
filen, frem for at lave den på forhånd? Så sparer du plads til et ekstra
array og besvær med kopiering mv.


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408921
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste