从书(PDF)上复制了一段代码到VS2008,结果产生了60个错误,我也是醉了。。。。
#include <iostream>
using namespace std;
#include <stdlib.h>
#include <string>
using namespace std;
int main()
{
char a[20],*str1="hello",*str2="wang",*str3;
strcpy(a,str1);
strcat(a," ");
strcat(a,str2);
cout<<strlen(str1)<<" "<<strlen(a)<<endl;
cout<<strcmp(a,str1)<<" "<<strcmp(a+6,str2)
<<" "<<strcmp(str1,str2)<<endl;
str3=strchr(str1,'l');
cout<<str3-str1<<" ";
str3=strrchr(str1,'l');
cout<<str3-str1<<endl;
str3=strstr(str2,"an");
cout<<str2<<" "<<str3<<endl;
while(1);
return 0;
}
解决方法:
就是每行的末尾带上了很多看不见的字符(直接粘过来有很多全角空格,用editplus打开文件就能看出来那些看不见的字符了...)。在下一行的头开始删除,一直到上一行的末尾,再回车换行,即可把上一行末尾的乱码字符全部删除掉
网上查到的资料解决方法
error C3872: '0xa0': this character is not allowed in an identifier
或者 error C3872: "0xa0": 此字符不允许在标识符中使用
这是因为直接复制代码的问题。0xa0是十六进制数,换成十进制就是160,表示汉字的开始。
解决办法:在报错的代码行检查两边的空格,用英文输入法的空格替换掉。
万恶的网络,万恶的word,这些无厘头的错误都是你们搞出来的!!
改正后的代码:
<pre name="code" class="html">#include <iostream>
using namespace std;
#include <stdlib.h>
#include <string>
using namespace std;
int main()
{
char a[20],*str1="hello",*str2="wang",*str3;
strcpy(a,str1);
strcat(a," ");//在a串后面添加一个空格字符
strcat(a,str2);
cout<<strlen(str1)<<" "<<strlen(a)<<endl;//显示长度
cout<<strcmp(a,str1)<<" "<<strcmp(a+6,str2)
<<" "<<strcmp(str1,str2)<<endl;//比较
str3=strchr(str1,'l');//左定位
cout<<str3-str1<<" ";
str3=strrchr(str1,'l');//右定位
cout<<str3-str1<<endl;
str3=strstr(str2,"an");
cout<<str2<<" "<<str3<<endl;
while(1);
return 0;
}