/ 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
Int skal ind i et array (C)
Fra : Heine Laursen


Dato : 12-12-01 08:55

Jeg har en int, jeg gerne vil have konverteret om til et array.

Eks hvis jeg har tallet 256 så skal arreyet se sådan ud:
array[0] = 2
array[1] = 5
array[2] = 6

Hvordan gøres det i C ??

Mvh
Heine Laursen

 
 
Heine Laursen (12-12-2001)
Kommentar
Fra : Heine Laursen


Dato : 12-12-01 09:04

Heine Laursen <gozar@pokerface.dk> wrote in news:9v72h5$ic4$1@sunsite.dk:

> Jeg har en int, jeg gerne vil have konverteret om til et array.
>
> Eks hvis jeg har tallet 256 så skal arreyet se sådan ud:
> array[0] = 2
> array[1] = 5
> array[2] = 6
>
> Hvordan gøres det i C ??
>
> Mvh
> Heine Laursen
>

Kan det mon være noget med itoa fra stdlib.h ??

Mvh
Heine Laursen

Mogens Hansen (12-12-2001)
Kommentar
Fra : Mogens Hansen


Dato : 12-12-01 17:08


"Heine Laursen" <gozar@pokerface.dk> wrote in message
news:9v731p$ic4$2@sunsite.dk...
>
> Kan det mon være noget med itoa fra stdlib.h ??
>

Ja, det er da en oplagt og glimrende mulighed.

Venlig hilsen

Mogens



Mogens Hansen (12-12-2001)
Kommentar
Fra : Mogens Hansen


Dato : 12-12-01 17:14


"Mogens Hansen" <mogens_h@dk-online.dk> wrote>
> "Heine Laursen" <gozar@pokerface.dk> wrote
> >
> > Kan det mon være noget med itoa fra stdlib.h ??
> >
>
> Ja, det er da en oplagt og glimrende mulighed.

Altså hvis koden ikke behøves at være portabel :)

Venlig hilsen

Mogens Hansen



Kim Petersen (12-12-2001)
Kommentar
Fra : Kim Petersen


Dato : 12-12-01 17:44

"Mogens Hansen" <mogens_h@dk-online.dk> writes:

> "Mogens Hansen" <mogens_h@dk-online.dk> wrote>
> [klip om itoa()]
> Altså hvis koden ikke behøves at være portabel :)

Huh? Hvorfor er den ikke portabel? Hvilke platforme implementerer
den ikke? (den har da været standard siden libc's første dage - og
er en del af ANSI standarden - ikke?).

--
Mvh. Kim Petersen /| Tlf: +4575831551 |\ Jomfru Ingefreds Vej 18
Software Engineer / | Fax: (none atm.) | \ 7100 Vejle
LSS / | Email: kim@vindinggaard.dk | \ DK - Danmark

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


Dato : 12-12-01 18:14

Kim Petersen <kim@vindinggaard.dk> skrev:
> "Mogens Hansen" <mogens_h@dk-online.dk> writes:
>
>> "Mogens Hansen" <mogens_h@dk-online.dk> wrote>
>> [klip om itoa()]
>> Altså hvis koden ikke behøves at være portabel :)
>
> Huh? Hvorfor er den ikke portabel? Hvilke platforme implementerer
> den ikke? (den har da været standard siden libc's første dage - og
> er en del af ANSI standarden - ikke?).

Tja, jeg kender ikke itoa(), den findes ikke på min linux-maskine,
og den er definitivt ikke en del af ANSI C, endsige C99.

Kim Petersen (12-12-2001)
Kommentar
Fra : Kim Petersen


Dato : 12-12-01 18:48

Byrial Jensen <bjensen@nospam.dk> writes:

> Kim Petersen <kim@vindinggaard.dk> skrev:
> > "Mogens Hansen" <mogens_h@dk-online.dk> writes:
> >
> >> "Mogens Hansen" <mogens_h@dk-online.dk> wrote>
> >> [klip om itoa()]
> >> Altså hvis koden ikke behøves at være portabel :)
> >
> > Huh? Hvorfor er den ikke portabel? Hvilke platforme implementerer
> > den ikke? (den har da været standard siden libc's første dage - og
> > er en del af ANSI standarden - ikke?).
>
> Tja, jeg kender ikke itoa(), den findes ikke på min linux-maskine,
> og den er definitivt ikke en del af ANSI C, endsige C99.

Jeg må se at lære at læse, checke og tænke først

atoi() er standard ikke itoa [som slet ikke findes].

--
Mvh. Kim Petersen /| Tlf: +4575831551 |\ Jomfru Ingefreds Vej 18
Software Engineer / | Fax: (none atm.) | \ 7100 Vejle
LSS / | Email: kim@vindinggaard.dk | \ DK - Danmark

Morten Brix Pedersen (12-12-2001)
Kommentar
Fra : Morten Brix Pedersen


Dato : 12-12-01 18:22

Kim Petersen wrote:

> "Mogens Hansen" <mogens_h@dk-online.dk> writes:
>
>
>>"Mogens Hansen" <mogens_h@dk-online.dk> wrote>
>>[klip om itoa()]
>>Altså hvis koden ikke behøves at være portabel :)
>>
>
> Huh? Hvorfor er den ikke portabel?


Fordi den ikke er en del af ANSI C.

> Hvilke platforme implementerer den ikke?


gcc.

> (den har da været standard siden libc's første dage - og
> er en del af ANSI standarden - ikke?).


Nej.

- Morten.


Jonas Meyer Rasmusse~ (12-12-2001)
Kommentar
Fra : Jonas Meyer Rasmusse~


Dato : 12-12-01 11:13

Du kan bruge modulo operatoren
dette her putter det ind i arrayet i modsat rækkefølge af hvad du foreslår.
du kan jo selv prøve at skrive det om.

int tal = 256;
int pos = 0;
int array[10];
while( tal )
{
int rest = tal % 10;
array[ pos++ ] = rest;
tal = tal / 10;
}

jeg har ikke testet det, det eneste jeg kan garantere er at ideen er god nok
;)


"Heine Laursen" <gozar@pokerface.dk> wrote in message
news:9v72h5$ic4$1@sunsite.dk...
> Jeg har en int, jeg gerne vil have konverteret om til et array.
>
> Eks hvis jeg har tallet 256 så skal arreyet se sådan ud:
> array[0] = 2
> array[1] = 5
> array[2] = 6
>
> Hvordan gøres det i C ??
>
> Mvh
> Heine Laursen



Bertel Lund Hansen (12-12-2001)
Kommentar
Fra : Bertel Lund Hansen


Dato : 12-12-01 12:06

Jonas Meyer Rasmussen skrev:

> tal = tal / 10;
>}

Bibemærkning:
Den linje kan skrives tal/=10;.

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

Heine Laursen (13-12-2001)
Kommentar
Fra : Heine Laursen


Dato : 13-12-01 08:51

"Jonas Meyer Rasmussen" <meyer_remove_@diku.dk> wrote in
news:9v7aip$riq$1@eising.k-net.dk:

> int tal = 256;
> int pos = 0;
> int array[10];
> while( tal )
> {
> int rest = tal % 10;
> array[ pos++ ] = rest;
> tal = tal / 10;
> }
>
> jeg har ikke testet det, det eneste jeg kan garantere er at ideen er
> god nok ;)

Det virker da

men pos++ tæller 1 for højt.!!

Mvh

Heine Laursen

Bertel Lund Hansen (13-12-2001)
Kommentar
Fra : Bertel Lund Hansen


Dato : 13-12-01 10:24

Heine Laursen skrev:

>> int tal = 256;
>> int pos = 0;
>> int array[10];
>> while( tal )
>> {
>> int rest = tal % 10;
>> array[ pos++ ] = rest;
>> tal = tal / 10;
>> }

>Det virker da
>men pos++ tæller 1 for højt!

Det kommer lidt an på hvordan man ser på det. Bemærk at 10 i
erklæringen af array også er '1 for høj' - men det er C-stil, og
jeg synes at det er nemmest at gøre det samme hver gang.

10 er selvfølgelig ikke for høj. Der er 10 arrayelementer, men
element nr. 10 findes ikke fordi man altid starter med det 0'te.
Derfor ville jeg lade pos tælle på samme måde og huske i alle
senere beregninger at den er 1 højere end den sidst benyttede
position.

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

Heine Laursen (13-12-2001)
Kommentar
Fra : Heine Laursen


Dato : 13-12-01 11:06

Bertel Lund Hansen <nospam@lundhansen.dk> wrote in
news:crsg1ug38cm4jbkvceu4e9j53i8jtet8nf@sunsite.auc.dk:

> Det kommer lidt an på hvordan man ser på det. Bemærk at 10 i
> erklæringen af array også er '1 for høj' - men det er C-stil, og
> jeg synes at det er nemmest at gøre det samme hver gang.
>
> 10 er selvfølgelig ikke for høj. Der er 10 arrayelementer, men
> element nr. 10 findes ikke fordi man altid starter med det 0'te.
> Derfor ville jeg lade pos tælle på samme måde og huske i alle
> senere beregninger at den er 1 højere end den sidst benyttede
> position.

Ja, det har jeg lige fundet ud af.. Nu har jeg fået hele skidtet til at
virke!!.

Hmm Hvad skal man så kaste sig over?

Mvh
Heine Laursen


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


Dato : 12-12-01 16:54

Heine Laursen <gozar@pokerface.dk> skrev:
> Jeg har en int, jeg gerne vil have konverteret om til et array.
>
> Eks hvis jeg har tallet 256 så skal arreyet se sådan ud:
> array[0] = 2
> array[1] = 5
> array[2] = 6
>
> Hvordan gøres det i C ??

Jeg ville nok bruge snprintf() eller sprintf() først og så bagefter
konvertere fra tegn til tal:

$ cat array.c
#include <stdio.h>

int main ()
{
char array[10];
const unsigned int tal = 256;
char *ch;

snprintf (array, sizeof (array), "%u", tal);
for (ch = array ; *ch ; ch++)
*ch -= '0';

printf ("array[0] = %d\n", array[0]);
printf ("array[1] = %d\n", array[1]);
printf ("array[2] = %d\n", array[2]);
return 0;
}
$ gcc -Wall array.c -o array
$ ./array
array[0] = 2
array[1] = 5
array[2] = 6
$

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

Månedens bedste
Årets bedste
Sidste års bedste