webForumDet fria alternativet

Konvertera char till int

C/C++

5 svar · 565 visningar · startad av LilleSkutt

Medlem sedan feb. 2001265 inlägg
Frågan#1

Hur gör jag för att konvertera en char till en int? :q

Jag har provat med atoi(); och att casta... Men inget av det går.

När jag försöker använda atoi(); klagar kompilatorn på att funktionen inte finns. Biblioteket som den ligger i är väl stdlib.h?

------------------
---
/* LilleSkutt */

Medlem sedan maj 20018 027 inlägg
#2

atoi() konverterar en nullterminerad sträng till en int. En char är faktiskt något helt annat. atoi() är deklarerad enligt nedan:

int atoi(const char *);

Det innebär att den tar inte en char som argument, den tar en pekare till en char. Denna pekare ska peka på första tecknet i en nullterminerad sträng.

Medlem sedan feb. 2001265 inlägg
#3

OK, men hur konverterar jag då en char till en int? Går det inte?

-redigerat-
Så här kanske? :)

<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
int i;
char[2] c;

cin.getline(c, 2);

i = atoi(c);

:q

------------------
---
/* LilleSkutt */

[Redigerat av LilleSkutt den 01 okt 2001]

Medlem sedan maj 20018 027 inlägg
#4

Eller kanske såhär:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">int i;
char c[2];

cin >> c[0];

c[1] = '\0'; // För att nullterminera strängen

i = atoi(c);

[Redigerat av UlfT den 02 okt 2001]

Medlem sedan juni 20008 205 inlägg
#5

<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
char foo;
cin >> foo;
int bar = c - '0';

Funkar dock inte på system med EBCDIC, har jag för mig ;)

------------------
And remember, when you look into the pit, the pit looks back into you. /Anonymous INTERCAL hacker

Medlem sedan feb. 2001265 inlägg
#6

Ok, tack för era förslag, nu har jag fått allt att funka, utom en grej.

Jag använde mig av cin.getline(inStr, 10); för att endast läsa de 10 första tecknen som användaren skrev in, och det gick jättebra. När jag använda Borlands kompilator. Men nu när jag använder Dev-C++ funkar det inte, den hittar inte funktionen. Finns det något sätt att göra likadant när man använder Dev-C++?

------------------
---
/* LilleSkutt */

253 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
115 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
116 ms — ändringar (db)