Avatar billede stringbuffer Nybegynder
29. marts 2002 - 17:03 Der er 5 kommentarer og
1 løsning

itoa() kompileringsfejl

Følgende program:

#include <stdio.h>
#include <stdlib.h>

int main (int argc, char** argv)
{

    char data[33];
    int number = 0x12345678;
    data[32] = 0;
    itoa(number, data, 2);
    printf("Data: %s\n", data);
    return 0;
}

giver denne fejl ved kompilering (RedHat Linux 7.2):
/tmp/ccNdpK6m.o: In function `main':
/tmp/ccNdpK6m.o(.text+0x1e): undefined reference to `itoa'
collect2: ld returned 1 exit status

Hvad er der galt og hvordan får jeg rettet problemet?

Avatar billede brilleaben Nybegynder
29. marts 2002 - 17:10 #1
Der findes ikke en 'itoa' i standard c...

Brug:

sprintf(data, "%i", number);

.. istedet.  Sprintf terminerer strengen med '\x00'
Avatar billede a1a1 Novice
29. marts 2002 - 17:11 #2
nu ved jeg ikke meget om c++ men...

det tyder på at du glemt at include det lib, hvor itoa() er defineret
Avatar billede stringbuffer Nybegynder
29. marts 2002 - 17:15 #3
Jeg kan ikke bruge sprintf, da den laver ikke radix-conversion som itoa gør.
Avatar billede brilleaben Nybegynder
29. marts 2002 - 17:22 #4
Aaah - du vil ha' skrevet det ud på binær form?  Hehe - piece of cake:

unsigned int value=0x55555555;
unsigned int mask=0x80000000;
int i;

for (i=0; i<32; i++, mask>>=1)
        printf("%c", ((value&mask) ? '1' : '0'));

printf("\n");
Avatar billede brilleaben Nybegynder
29. marts 2002 - 17:26 #5
Din 'number' er min 'value'
Avatar billede stringbuffer Nybegynder
29. marts 2002 - 20:17 #6
Du gav mig en idé der... så jeg accepterer
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