2011-02-15 224 views
7

我正在做我的第一個並行應用程序,但我堅持使用C的基本知識。我需要知道,如何將int轉換爲char,然後如何將一個字符追加到另一個。C - 將int轉換爲char並將char追加到char

它可以幫助我,我會很高興。謝謝。

+0

我沒有看到任何「並行編程」這件事。請解釋? – abelenky 2011-02-15 19:20:37

+0

我的應用程序是第一次在並行編程課程,因此沒有標籤並行編程,只是有一些問題,以鑄造字符附加字符 – Waypoint 2011-02-15 20:32:51

回答

8

您可以使用itoa函數將整數轉換爲字符串。

可以使用strcat函數在另一個字符串末尾的字符串中追加字符。

如果你想一個整數轉換爲字符,只是做如下 -

int a = 65; 
char c = (char) a; 

注意,由於字符的尺寸小於整數較小,這鑄造可能會導致數據丟失。在這種情況下,最好將字符變量聲明爲unsigned(儘管您可能仍會丟失數據)。

要做一個關於類型轉換的燈讀,去here

如果仍有問題,請對此答案發表評論。

編輯

轉到here用於接合字符的更合適的例子。

另外一些有用的鏈接下面給出 -

  1. http://www.cplusplus.com/reference/clibrary/cstring/strncat/
  2. http://www.cplusplus.com/reference/clibrary/cstring/strcat/

第二個編輯

char msg[200]; 
int msgLength; 
char rankString[200]; 

........... // Your message has arrived 
msgLength = strlen(msg); 
itoa(rank, rankString, 10); // I have assumed rank is the integer variable containing the rank id 

strncat(msg, rankString, (200 - msgLength)); // msg now contains previous msg + id 

// You may loose some portion of id if message length + id string length is greater than 200 

第三編輯

轉到此link。在這裏你會找到一個itoa的實現。改爲使用它。

0
int i = 100; 
char c = (char)i; 

沒有辦法將一個字符追加到另一個字符。但是你可以創建一個字符數組並使用它。

+0

C離開它的實施,以指定是否'字符`是`簽名'或'無符號`。在實踐中,編譯器傾向於遵循ABI推薦的架構,所以'char'在x86上簽名,並且在PPC/ARM上未簽名。 GCC可以用`-fsigned-char`和`-funsigned-char`覆蓋,但是這可能會破壞已安裝庫的ABI。 – ephemient 2011-02-15 19:20:56

+0

@ephemient:不知道。謝謝! – Andrew 2011-02-15 19:23:28

2
int myInt = 65; 

char myChar = (char)myInt; // myChar should now be the letter A 

char[20] myString = {0}; // make an empty string. 

myString[0] = myChar; 
myString[1] = myChar; // Now myString is "AA" 

這應該都可以在C書的任何介紹中找到,或者通過一些基本的在線搜索。

3

鑄造的int炭簡單地用括號與類型分配完成:

int i = 65535; 
char c = (char)i; 

注:我認爲你可能會丟失數據(如上例),因爲類型的大小是不同的。

將字符添加到字符不能完成(除非你的意思是算術,那麼它是簡單的操作符)。你需要使用字符串,字符數組和<string.h>函數,如strcatsprintf

1

鑄造intchar涉及丟失數據,編譯器可能會警告您。

提取特定字節從int聽起來比較合理,可以這樣做:

number & 0x000000ff; /* first byte */ 
(number & 0x0000ff00) >> 8; /* second byte */ 
(number & 0x00ff0000) >> 16; /* third byte */ 
(number & 0xff000000) >> 24; /* fourth byte */