c语言中运行报错 error C2018: unknown character '0xa1',可是整个语句根本没有'0xa1'···为啥啊
5个回答
展开全部
错误原因:'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语言中,“=”是赋值运算符,“==”是关系运算符。在此代码中,前者是进行比较,后者是进行赋值。
展开全部
'0xa1' 是一个字符,ASCII码是161(16进制0xa1),是不可打印字符
把报错的那一行的空白全部替换成空格(或Tab)就可以了
出现这样的编译错误,一般都是因为复制,粘贴造成的
把报错的那一行的空白全部替换成空格(或Tab)就可以了
出现这样的编译错误,一般都是因为复制,粘贴造成的
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的代码行间或字间隐藏了汉字空格或其他什么编译器不认识的东西了。你把报错的那一两行重新认真地敲一遍就OK了……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码贴出来看一下呗
追问
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就已经分配空间了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询