|
| 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.
| |
|
|