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 类型
答案:4 悬赏:70 手机版
解决时间 2021-04-04 04:27
- 提问者网友:送舟行
- 2021-04-03 14:38
最佳答案
- 五星知识达人网友:舍身薄凉客
- 2021-04-03 15:27
补充:
楼主没有弄清楚整数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 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];
for(i=0;i<5;i++)
{
key[i]= (unsigned char)(i + '0');
}
key[i] = '\0';
CEdit* pedit = (CEdit*)GetDlgItem(IDC_EDIT_DISP);
pedit->SetWindowText((char*)key);
MessageBox((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 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];
for(i=0;i<5;i++)
{
key[i]= (unsigned char)(i + '0');
}
key[i] = '\0';
CEdit* pedit = (CEdit*)GetDlgItem(IDC_EDIT_DISP);
pedit->SetWindowText((char*)key);
MessageBox((char*)key,"",0);
全部回答
- 1楼网友:春色三分
- 2021-04-03 16:47
unsingned char 的第一位(也就是第0位存的是整个字符串的长度),所以不处理第一个字符就可以
- 2楼网友:十年萤火照君眠
- 2021-04-03 16:29
你存入的是数字,却要按字符输出,可能会有转换问题
可以把数字转换成字符,
int key[5];
char str[5];
sprintf(str+i,"%d",key[i]);(省了for循环)
然后再输出str,应该就可以了,
- 3楼网友:一秋
- 2021-04-03 16:18
补充: 楼主没有弄清楚整数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 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]; for(i=0;i<5;i++) { key[i]= (unsigned char)(i + '0'); } key[i] = '\0'; cedit* pedit = (cedit*)getdlgitem(idc_edit_disp); pedit->setwindowtext((char*)key); messagebox((char*)key,"",0);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯