2011-05-31 133 views
-2

我有2个变量:追加数组

int a; 
char b[10]; 

我想结合/在一个阵列中的两个数据追加:

temp[50]; 

我怎么能这样做?

+0

我们需要更多的细节 – rerun 2011-05-31 02:17:17

+0

你所说的附加在一个阵列中的意思是两个数据?什么是温度类型[50]?你为什么想这样做? – Wiz 2011-05-31 02:21:08

回答

0
struct stuff { 
    int a; 
    char b[10]; 
} 

struct stuff temp[50]; // an array of 50 structs with 2 members each. 
+0

我如何访问结构成员? – kiran 2011-06-01 02:32:57

+0

temp-> a; TEMP-> B; – kiran 2011-06-01 02:33:18

+0

@kiran'temp [index] .a; temp [index] .b'你有什么相当于'temp [0] .a;温度[0] .b' – lambacck 2011-06-01 19:30:07

0

什么是你的温度[50]的数据类型?如果它是一个char temp [50],那么你可以把你的'int a'变成char 使用以下建议从同一个社区,stackoverflow,由JaredPar

char dig =(char)((( INT) '0')+ I); [ref] https://stackoverflow.com/questions/1114741/convert-int-to-char-c

+0

嗯是的..并丢失3个字节的数据为每个int .. – 2011-05-31 02:19:36

+0

@ filip-fku,如果是这样的话,你总是可以将你的int分成4个字符(基本上占用char数组中的4个字符槽)。就像我说的那样,你的temp [50]的数据类型是什么? int或字符或你定义(结构)可以容纳一个'int'和一个'字符',然后有'结构'数组? – 2011-05-31 02:22:26

+0

确切地说,但是这不是完全转换为字符的int是它吗?这更像是使用int来携带字符。这可能是有用的,我想这一切都取决于我们没有的这个问题的背景。 – 2011-05-31 02:31:08

0

在同一个数组中混合不同的数据类型没有意义 - 我建议不要这样做。如果你真的必须以某种方式组合它们,你可以使用一个结构。

另一方面,从技术上讲,它可能是因为一个int足够大以容纳一个char - 所以你可以创建一个int类型的数组temp,然后用int或chars填充array ..

+0

抱歉,我是初学者。你能告诉我我是如何在一个数组中填充不同类型的数据吗?谢谢 – kiran 2011-05-31 02:32:28

+0

我想说的是,你通常不应该那样做。你能告诉我们为什么你想这样做,你想达到什么目的? – 2011-05-31 02:35:38

2

您没有给我们足够的有关温度类型或为什么要这么做的信息,通常它没有多大意义来组合类型。然而,如果温度是一个字符数组,你想连接两者的某种有用的输出,你可以用sprintf:

int a = 10; 
char b[10] = "apple"; 
char temp[50]; 

sprintf(temp, "%d %s", a, b); 

/* 10 apple */ 
puts(temp); 

%d在sprintf的用于表示一个十进制整数,而%s是使用中表示以空字符结尾的字符串。

+0

我有数据int a = 10;和char [20] =“苹果”。当我调用显示函数时,我希望char temp [50]具有temp = 10个苹果。这有帮助吗。谢谢。 – kiran 2011-05-31 02:37:29

+1

我想你对ASCII字符串表示感兴趣。你可能想更新你的问题来澄清。我更新了代码,sprintf可以使用任何你喜欢的格式。 – Wiz 2011-05-31 02:40:39

+0

在这种情况下,这看起来很接近你以后的样子。 – 2011-05-31 02:41:10

0

你的意思是:

char temp[50] = {a, b[0], b[1], ...}; 

如果是这样,它是:

char temp[50]; 
temp[0] = a; 
memcpy(&temp[1], b, sizeof(char) * 10);