c语言中运行报错 error C2018: unknown character '0xa1',可是整个语句根本没有'0xa1'···为啥啊

 我来答
A1620921354
2020-04-02 · TA获得超过5813个赞
知道答主
回答量:388
采纳率:100%
帮助的人:16.7万
展开全部

错误原因:'0xa1' 是一个字符,ASCII码是161(16进制0xa1),这是因为错误行含有全角字符,全角的空格的编码是'0xa1'。

解决方法:仔细检查错误行看是否含有全角空格\分号等待,或者注释掉,再重新写一遍

注意:每行的前面都有个看不见的全角空格。

扩展资料:

C语言常见错误:

1.书写标识符时,忽略大小写:

编译程序会出错,C语言区分大小写,习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。

2.忽略变量类型,进行不合法运算:

%是求余运算,得到a/b的整余数。整型变量可进行求余运算,而实型变量则不允许进行求余运算。

3.字符常量与字符串常量混淆:

字符常量是一对单引号括起来的常量,字符串常量是一对双引号括起来的常量。C语言规定以“\0”作为字符串结束标志,它是系统自动加上的,所以字符常量“b”其实包含两个字符'b' '\0',而把它赋给一个字符变量是不行的。

4.忘加地址运算符“&”:scanf函数的作用是:

按照a在内存中的地址将a的值存进去。“&a”是指a在内存中的地址。

5.忽略了“=”和“==”的区别:

C语言中,“=”是赋值运算符,“==”是关系运算符。在此代码中,前者是进行比较,后者是进行赋值。

伊·梵beec
推荐于2018-02-26 · TA获得超过2160个赞
知道大有可为答主
回答量:1897
采纳率:0%
帮助的人:1381万
展开全部
'0xa1' 是一个字符,ASCII码是161(16进制0xa1),是不可打印字符

把报错的那一行的空白全部替换成空格(或Tab)就可以了

出现这样的编译错误,一般都是因为复制,粘贴造成的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2013-01-14 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6638万
展开全部
你的代码行间或字间隐藏了汉字空格或其他什么编译器不认识的东西了。你把报错的那一两行重新认真地敲一遍就OK了……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刘哥专属
2018-10-17
知道答主
回答量:1
采纳率:0%
帮助的人:817
展开全部
使用了中文字符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
164zsq
2013-01-14 · TA获得超过467个赞
知道小有建树答主
回答量:486
采纳率:0%
帮助的人:442万
展开全部
代码贴出来看一下呗
追问
void insertBST(Btvolume *bst,book *key)
{
Btvolume s;
if(*bst==NULL) //递归结束条件
{
s=(Btvolume)malloc(sizeof(volume));
strcpy(&(s->books.bookinform),&(key->bookinform));
strcpy(&(s->books.bookname),&(key->bookname));
strcpy(&(s->books.writer),&(key->writer));
    s->lchild=NULL; 就这句报错
s->rchild=NULL;
*bst=s;
}
追答
错误可能原因是代码中有冲突
s=(Btvolume)malloc(sizeof(volume));

这句话是否多余,上面初始化对象s就已经分配空间了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式