2011-04-15 152 views
1

我在我的源文件中有一些xmlChar *,我需要它們是整數形式。鑄造指針intl

如何正確投射這些?

當我嘗試這樣做world->representation = malloc(sizeof(int *) * mapHeight);它說

error: invalid operands to binary * (have ‘long unsigned int’ and ‘xmlChar *’) 

,當我試圖這樣

world->representation = malloc(sizeof(int *) * (int) mapHeight); 

我得到這個錯誤

用於建築x86_64的未定義符號: 「_main」 ,參考文獻: 開始於crt1.10.6.o 「_commandfetcher」,從引用:在ccPv5Pvd.o LD _commandFetcher:符號(S)沒有發現建築x86_64的

我如何能投射出XMLCHAR指向int?例如xmlChar的值是30,我需要int形式。

+2

'mapHeight'指向一個包含「30」的字符串,即*不與*「具有值30」相同。你需要使用atoi/strtol進行轉換,這不是* cast * – Erik 2011-04-15 12:15:12

回答

2

您不能簡單地將char投射到int。 (或者說,你可以,但它不會做什麼,你認爲它。)

使用strtol將字符串轉換爲整數:

char* number = "30"; 
int value = strtol(number, NULL, 0); 
+0

這需要'long int',而不是'int'。 'strtol()'和'atol()'有什麼區別? – 2011-04-15 13:09:36

+0

'strtol'允許你指定你正在使用哪個基地,可以解析十六進制,並且可以給你一個指向解析字符串結尾的指針。看文檔。 – 2011-04-15 13:10:56

0

你不想投指針 - 你想解除引用。

但在這種情況下,您可能想要將字符串轉換爲整數?