2011-02-15 185 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 */