在Ubuntu系统中使用gcc编译C程序时,如果遇到“error: stray ‘\357’ in program”这样的错误,通常是由于源代码文件中存在非标准的字符导致。这种情况在我们使用一些特殊的文本编辑器编辑源代码时可能会出现。例如,一些文本编辑器可能会在文件开始处插入一个特殊的字符序列(称为字节顺序标记或BOM),用于指示文件的编码方式。

“\357”是一个八进制数,在ASCII表中对应十进制数239。如果你查看UTF-8编码方式下BOM(字节顺序标记)所对应的十进制数字组合,你会发现它就是239, 187, 191。所以,“stray ‘\357’ in program”错误很有可能就是由于源代码文件开始处存在UTF-8 BOM导致。

那么如何解决这个问题呢?我们需要去除掉那个不必要且引发问题的BOM。

首先打开终端,在终端输入以下命令:

sed '1s/^\xEF\xBB\xBF//' < inputfile > outputfile

其中,“inputfile”代表你要处理掉BOM头部信息后保存为新内容之前原始C程序源码所存放路径和名称;而"outputfile"则代表处理后新内容保存路径和名称。“sed '1s/^\xEF\xBB\xBF//' < inputfile > outputfile”这条命令的作用是将原始文件中的BOM头部信息去除,并将处理后的内容保存为新文件。

执行完上述命令后,你就可以使用gcc对新生成的outputfile进行编译了。这时候,你应该不会再看到“stray ‘\357’ in program”错误。

如果你不想创建一个新文件,而是希望直接修改原始文件,那么可以使用以下命令:

sed -i '1s/^\xEF\xBB\xBF//' inputfile

上述命令会直接在原地修改inputfile,并去除其BOM头部信息。执行完毕后再用gcc编译该源码就应该不会出现问题了。

总结一下,“stray ‘\357’ in program”错误通常由于源代码中存在UTF-8 BOM导致。解决方法是使用sed工具去除掉BOM即可。希望以上内容能够帮助到遇到类似问题的C程序员们!

云服务器推荐

蓝易云国内/海外高防云服务器推荐


海外免备案云服务器链接:www.tsyvps.com

蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。


百度搜索:蓝易云

蓝易云是一家专注于香港及国内数据中心服务的提供商,提供高质量的服务器租用和云计算服务、包括免备案香港服务器、香港CN2、美国服务器、海外高防服务器、国内高防服务器、香港VPS等。致力于为用户提供稳定,快速的网络连接和优质的客户体验。
最后修改:2023 年 10 月 19 日
如果觉得我的文章对你有用,请随意赞赏