如何修复提到“stray '\342'”和“stray '\200'”的编译错误?

如何修复提到“stray '\342'”和“stray '\200'”的编译错误?

我写了这个程序:

#include<stdio.h>
int main()
{
printf(“Hello World\n”);
return 0;
}

我将其保存为first.c并尝试编译但收到此问题我甚至安装了 gcc 编译器。

$ gcc first.c -o first1
first.c: In function ‘main’:
first.c:4:1: error: stray ‘\342’ in program
first.c:4:1: error: stray ‘\200’ in program
first.c:4:1: error: stray ‘\234’ in program
first.c:4:11: error: ‘Hello’ undeclared (first use in this function)
first.c:4:11: note: each undeclared identifier is reported only once for each function 
it appears in
first.c:4:17: error: expected ‘)’ before ‘World’
first.c:4:17: error: stray ‘\’ in program
first.c:4:17: error: stray ‘\342’ in program
first.c:4:17: error: stray ‘\200’ in program
first.c:4:17: error: stray ‘\235’ in program

我该如何解决这个问题?

答案1

问题在于您使用的是 Unicode 引号而不是 ASCII 引号;可能是您的编辑器自动更改了它们,或者您从某个网站复制了文本,而该网站的创作软件会自动执行此操作。将引号替换为普通的 ASCII 引号 (0x22, "),它应该可以正常工作。

固定来源:

#include <stdio.h>
int main()
{
    printf("Hello World\n");
    return 0;
}

答案2

您将字符串括在了错误的引号中。

你有:

“Hello World\n”

你应该有:

"Hello World\n"

虽然您使用的引号看起来相似,但 C 编译器无法将它们识别为包含字符串。因此,您会收到有关无法识别的 Unicode 字符的错误消息,并且会收到显示字符串内容被解释为未加引号的程序代码的错误消息。

您会注意到,您使用的引号有单独的字符来表示引文的开始和结束(它们是弯曲的,引号通常是这样排版的)。许多文字处理器——Jobin 建议--会自动将简单的"引号转换为这种花哨的引号。如果您使用文字处理器编写 C 程序,则应改用文本编辑器。

Ubuntugedit默认安装(尽管还有许多其他文本编辑器可供选择)。与许多文本编辑器一样,它gedit为许多编程语言(包括 C)提供语法高亮显示(因此程序中的不同文本将以不同的颜色显示以表示其含义),这是一个方便的功能,使文本编辑器更加方便和用户友好对于编程来说它比文字处理器更合适。

如果您习惯于使用其他平台上的文本编辑器,该编辑器会自动将粘贴的引号缩减为非花哨版本,那么这可能是 Ubuntu 特有的。但这个问题最终可能会被关闭并迁移到堆栈溢出

答案3

您可以使用该sed命令来修复这些问题。

这将让您快速预览将要替换的内容。

sed -re 's/”|“/"/g' File.txt

这将进行替换并将替换内容放入名为的新文件中WithoutSmartQuotes.txt

sed -re 's/”|“/"/g' File.txt > WithoutSmartQuotes.txt

这将覆盖原始文件:

sed -i .bk -re 's/”|“/"/g' File.txt

相关内容