char[]数组该如何赋值

比如有这段代码
int a = 10;
int b = 20;
int c = 30;
char con[3];
memset(con,0,3);
con[0] = a;
con[1] = b;
con[2] = c;
int s = 0;
char c_con2[20];
memset(c_con2,0,20);
for (int i = 0;i < 3;i++)
{
c_con2[s] = con[i];
c_con2[s+1] = ',';
s = s + 2;
}
CString cs_con = "";
cs_con.Format(_T("%s"),c_con2);
我的目的是想由3个int值得到一个字符串CString = “10,20,30”,但是现在得到的是乱码,正确的该怎么写啊。

定义一个数组char a[10];
怎么给这个数组赋值呢?
1、定义的时候直接用字符串赋值
char a[10]="hello";
注意:不能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的!
2、对数组中字符逐个赋值
char a[10]={'h','e','l','l','o'};
3、利用strcpy
char a[10]; strcpy(a, "hello");
易错情况:
1、char a[10]; a[10]="hello";//一个字符怎么能容纳一个字符串?况且a[10]也是不存在的!
2、char a[10]; a="hello";//这种情况容易出现,a虽然是指针,但是它已经指向在堆栈中分配的10个字符空间,现在这个情况a又指向数据区中的hello常量,这里的指针a出现混乱,不允许!
main()
{
char s[30];
strcpy(s, "Good News!"); /*给数组赋字符串*/ .
}
上面程序在编译时, 遇到char s[30]这条语句时, 编译程序会在内存的某处留出连续30个字节的区域, 并将第一个字节的地址赋给s。当遇到strcpy( strcpy 为Turbo C2.0的函数)时, 首先在目标文件的某处建立一个"Good News!/0" 的字符串。其中/0表示字符串终止, 终止符是编译时自动加上的, 然后一个字符一个字符地复制到s所指的内存区域。因此定义字符串数组时, 其元素个数至少应该比字符串的长度多1。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-15
#include <stdio.h>
#include<string.h>
int main()
{
int a = 10; 
int b = 20; 
int c = 30; 
char con[3][3];
sprintf(con[0],"%d",a);
sprintf(con[1],"%d",b);
sprintf(con[2],"%d",c);
char c_con2[20];
memset(c_con2,0,20);
for (int i = 0;i < 3;i++){
        strcat(c_con2,con[i]);
        strcat(c_con2,";");
}
printf("%s\n",c_con2);
}

输出:10;20;30;

追问

现在int a = 10,如果int a = 1024;那 char con[3][3][3][3];?

追答

char con[3][5]
3表示需要存储3个字符串,5表示每个字符串长度为5。

追问

明白了,谢谢了

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网