请问有谁知道中文字符的ASCII码范围? 如题。若正确马上结贴。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ascii是固定的椰,就是七位嘛。中文根本不在这个区啊中文占两字节嘛,区域还不好讲,因为还会扩展嘛 中文是占两字节啊,但它拆成两个字节后每个字节也不在ascii的范围吗? 附:打印所有汉字的代码int main(int argc, char* argv[]){ int n=0; FILE *stream; if((stream = fopen("AllGB.txt", "wb")) == NULL) { printf("Cannot open output file.\n"); return 0; } for(unsigned char i=176;i<255;i++) { for(unsigned char j=161;j<=160+94;j++) { fwrite(&i,1,1,stream); fwrite(&j,1,1,stream); } fwrite("\r\n",2,1,stream); } return 0;} to horseman28(一天到晚睡觉的鱼) : 好像对了。但怎么我用以下的代码测试不出来的? void CForbidDlg::OnChangeData() {UpdateData(true);int i;CString str;str="";for(i=0;i<m_DATA.GetLength();i++) if(m_DATA[i]>=128&&m_DATA[i]<=254) str=str+m_DATA[i]; if(str!="") { MessageBox(str); str=""; }} 这个是检测字符串中有多少汉字的代码吗?试试看这个:CString m_DATA = "TEST汉字^@$%^%f234测LKJ试S";CString str;for(int i = 0; i < m_DATA.GetLength() - 1; i++){ unsigned char cl = m_DATA[i], ch = m_DATA[i + 1]; if(cl > 176 && ch > 161) { str += m_DATA[i++]; str += m_DATA[i]; }}AfxMessageBox(str); 这个问题horseman28(一天到晚睡觉的鱼)的回答是对的。应该结贴了。但能不能再帮我看看为什么我用以下代码测试不出来?这个问题会另外起一贴。请关注。/下面是Edit 的OnChange事件//m_DATA是Edit的变量成员void CForbidDlg::OnChangeData() {UpdateData(true);int i;CString str;str="";for(i=0;i<m_DATA.GetLength();i++){ if(m_DATA[i]>=176&&m_DATA[i]<=255) str=str+m_DATA[i]; //若果是中文字符则显示出来 if(str!="") { MessageBox(str); str=""; }} GDI/GDI+中如何快速将HDC刷成白色? 用VC能不能开发火狐或者opera等非IE核心浏览器的插件? ActiveX控件注册出错 请教一个控件类型 继承MFC类问题 我的VC今天是怎么了 关于随机数的问题,帮忙! win7下得SPI数据包过滤问题 onidle(-1)是什么意思?为什么参数为负? 关于//{{AFX_??? 的问题 ---> 大家帮忙这种类 为什么编译老不过啊? 40分送 用VB6.0做DCOM可以吗?
ascii是固定的椰,就是七位嘛。
中文根本不在这个区啊中文占两字节嘛,区域还不好讲,因为还会扩展嘛
中文是占两字节啊,但它拆成两个字节后每个字节也不在ascii的范围吗?
{
int n=0;
FILE *stream;
if((stream = fopen("AllGB.txt", "wb")) == NULL)
{
printf("Cannot open output file.\n");
return 0;
}
for(unsigned char i=176;i<255;i++)
{
for(unsigned char j=161;j<=160+94;j++)
{
fwrite(&i,1,1,stream);
fwrite(&j,1,1,stream);
}
fwrite("\r\n",2,1,stream);
}
return 0;
}
to horseman28(一天到晚睡觉的鱼) : 好像对了。但怎么我用以下的代码测试不出来的? void CForbidDlg::OnChangeData()
{UpdateData(true);
int i;
CString str;
str="";
for(i=0;i<m_DATA.GetLength();i++)
if(m_DATA[i]>=128&&m_DATA[i]<=254)
str=str+m_DATA[i];
if(str!="")
{
MessageBox(str);
str="";
}
}
CString str;for(int i = 0; i < m_DATA.GetLength() - 1; i++)
{
unsigned char cl = m_DATA[i], ch = m_DATA[i + 1];
if(cl > 176 && ch > 161)
{
str += m_DATA[i++];
str += m_DATA[i];
}
}
AfxMessageBox(str);
这个问题horseman28(一天到晚睡觉的鱼)的回答是对的。应该结贴了。但能不能再帮我看看为什么我用以下代码测试不出来?这个问题会另外起一贴。请关注。/下面是Edit 的OnChange事件
//m_DATA是Edit的变量成员
void CForbidDlg::OnChangeData()
{UpdateData(true);
int i;
CString str;
str="";
for(i=0;i<m_DATA.GetLength();i++)
{
if(m_DATA[i]>=176&&m_DATA[i]<=255)
str=str+m_DATA[i];
//若果是中文字符则显示出来
if(str!="")
{
MessageBox(str);
str="";
}
}