C语言 杂散377和376

ldioqlga  于 2023-05-16  发布在  其他
关注(0)|答案(3)|浏览(313)

我是Linux操作系统的新手,我正试图编译一个简单的C程序。我用文本编辑器写的

#include<stdio.h>

void main() {
    printf("Hello!");
}

我输入了gcc -o main main.c
出现以下问题:

main.c:1:1: error: stray '\377' in program
 # i n c l u d e < s t d i o . h >
main.c:1:2: error: stray '\376' in program

每当我运行C或C++程序时都会发生这种情况。

q9rjltbz

q9rjltbz1#

\377\376是构成值0xFEFF ,(UTF-16字节顺序标记)的字节的八进制表示。你的编译器并不期望你的源代码中有这些字符。
您需要将源文件的编码更改为UTF-8或ASCII。考虑到现有的文本编辑器的数量以及您问题中缺乏这些信息,我无法列出如何做到这一点的所有可能性。
您可以在bash shell中执行以下操作:

cat > program.c
// File content here
^D

这将创建一个名为“program.c”的文件,其内容为“// File content here”,使用UTF-8格式。

dsf9zpds

dsf9zpds2#

您的文本编辑器正在以错误的字符编码保存程序。将其保存为ASCII纯文本,然后重试。

cetgtptt

cetgtptt3#

  • 没有文本,只有编码文本 *

在编辑器中,您已经选择使用UTF-16 LE字符编码(大概)保存文本文件。
任何读取文本文件的程序都必须知道文本文件的字符编码。它可以接受一个文档化的字符编码(仅或默认)和/或允许您告诉它您使用的是哪一个。
这可能行得通

gcc -finput-charset=UTF16-LE main.c

但是因为你有包含文件,包含文件必须使用相同的字符编码。在我的系统上,它们使用UTF-8(并包含©,这很好,因为gcc阻塞了字节,让我知道我搞砸了)。
注意:用UTF-16保存C源文件(或大多数文本文件)并不常见。UTF-8对于所有类型的文本文件都很常见。(ASCII也不是很常见。您可能在许多文本编辑器中找不到它作为一个选项。从历史上看,MS-DOS不支持它,Windows很晚才得到它,只是为了完整起见。

相关问题