unsigned char 类型
unsignedshorti=0;unsignedcharkey[5];for(i=0;i<5;i++){key[i]=(unsignedchar)i;}CEdit*pe...
unsigned short i=0;
unsigned char key[5];
for(i=0;i<5;i++)
{
key[i]= (unsigned char)i;
}
CEdit* pedit = (CEdit*)GetDlgItem(IDC_EDIT_DISP);
pedit->SetWindowText((char*)key);
MessageBox((char*)key【0】,"",0);
为什么编辑框和对话框显示为空,该怎么写才能显示01234。急
zubyzuby 太厉害了。只是我还有点不明白为什么(unsigned char)(i+‘0’)结果会是i,并且长度是1,难到‘0’是字符结束符,那长度也该是二啊,当不加‘0’时却是空值,实在想不明白。
最佳答案是zubyzuby 的,不过要是谁能解释我补充的问题我再加分。 展开
unsigned char key[5];
for(i=0;i<5;i++)
{
key[i]= (unsigned char)i;
}
CEdit* pedit = (CEdit*)GetDlgItem(IDC_EDIT_DISP);
pedit->SetWindowText((char*)key);
MessageBox((char*)key【0】,"",0);
为什么编辑框和对话框显示为空,该怎么写才能显示01234。急
zubyzuby 太厉害了。只是我还有点不明白为什么(unsigned char)(i+‘0’)结果会是i,并且长度是1,难到‘0’是字符结束符,那长度也该是二啊,当不加‘0’时却是空值,实在想不明白。
最佳答案是zubyzuby 的,不过要是谁能解释我补充的问题我再加分。 展开
5个回答
展开全部
你存入的是数字,却要按字符输出,可能会有转换问题
可以把数字转换成字符,
int key[5];
char str[5];
sprintf(str+i,"%d",key[i]);(省了for循环)
然后再输出str,应该就可以了,
可以把数字转换成字符,
int key[5];
char str[5];
sprintf(str+i,"%d",key[i]);(省了for循环)
然后再输出str,应该就可以了,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
unsingned char 的第一位(也就是第0位存的是整个字符串的长度),所以不处理第一个字符就可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
i+'0' 是一种隐性转换 将i转换成整型了
追问
盗我的账号,就是为了问这个白痴问题?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
补充:
楼主没有弄清楚整数1和字符'1',建议看一下ASCII码表
char ch1 = 0;
char ch1 = '\0';
char ch2 = '0';
'0' 和 '\0'是不同的
'0' 是字符,用0x30(10进制=48)表示
'\0'是字符串结束符,就是整数0
可以用0代替'\0',但是为了标明是字符串结束符最好用'\0',这样便于程序阅读和查错。
char ch1 = '\0'; /* char ch1 = 0;也可以 */
char ch2 = '0';
printf("%d %c", ch1,ch2);/*检验*/
字符数组和字符串的区别
字符数组用来存储字符串,输出字符串的时候,遇到'\0'就结束,后面的字符不会输出
如果数组没有字符串结束符,输出字符串可能会有数不完的乱码,甚至会因为访问不能访问的地址导致程序异常终止
char ch[5];
cha[0] = '0';
cha[1] = '1';
cha[2] = '2';
cha[3] = '3';
cha[4] = '4';
printf("%s", ch);/* 输出结果无法预料 */
------------------------------------------
unsigned short i=0;
unsigned char key[6]; /* 字符串 “01234“ 要6个位置存储,字符串结束符'\0'要占一个位置,计算字符串长度的时候不包括'\0' */
for(i=0;i<5;i++)
{
key[i]= (unsigned char)(i + '0'); /* 用字符'0', '1','2','3','4'*/
}
key[i] = '\0'; /* 添加字符串结束符 */
CEdit* pedit = (CEdit*)GetDlgItem(IDC_EDIT_DISP);
pedit->SetWindowText((char*)key);
MessageBox((char*)key,"",0); /* 不能用(char*)key[0] */
楼主没有弄清楚整数1和字符'1',建议看一下ASCII码表
char ch1 = 0;
char ch1 = '\0';
char ch2 = '0';
'0' 和 '\0'是不同的
'0' 是字符,用0x30(10进制=48)表示
'\0'是字符串结束符,就是整数0
可以用0代替'\0',但是为了标明是字符串结束符最好用'\0',这样便于程序阅读和查错。
char ch1 = '\0'; /* char ch1 = 0;也可以 */
char ch2 = '0';
printf("%d %c", ch1,ch2);/*检验*/
字符数组和字符串的区别
字符数组用来存储字符串,输出字符串的时候,遇到'\0'就结束,后面的字符不会输出
如果数组没有字符串结束符,输出字符串可能会有数不完的乱码,甚至会因为访问不能访问的地址导致程序异常终止
char ch[5];
cha[0] = '0';
cha[1] = '1';
cha[2] = '2';
cha[3] = '3';
cha[4] = '4';
printf("%s", ch);/* 输出结果无法预料 */
------------------------------------------
unsigned short i=0;
unsigned char key[6]; /* 字符串 “01234“ 要6个位置存储,字符串结束符'\0'要占一个位置,计算字符串长度的时候不包括'\0' */
for(i=0;i<5;i++)
{
key[i]= (unsigned char)(i + '0'); /* 用字符'0', '1','2','3','4'*/
}
key[i] = '\0'; /* 添加字符串结束符 */
CEdit* pedit = (CEdit*)GetDlgItem(IDC_EDIT_DISP);
pedit->SetWindowText((char*)key);
MessageBox((char*)key,"",0); /* 不能用(char*)key[0] */
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询