如何解决提到“ stray'\ 342'”和“ stray'\ 200'”的编译错误?[关闭]


9

我写了这个程序:

#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

我该如何解决这个问题?


您是否从其他文字处理程序或文档(如Libre office或Microsoft Word)复制了该程序?
Jobin

如果您从某处复制了代码,则请自行重写代码,因为复制的代码中可能嵌入了一些不需要的代码。

Answers:


13

问题是您有Unicode引号而不是ASCII引号。可能是您的编辑器自动更改了它们,或者您从在其创作软件中自动执行此操作的站点复制了文本。用普通的ASCII引号(0x22,“)替换引号,它应该可以工作。

固定来源:

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

+1我想知道他是如何在其中获得这些后退/前进报价的。
亚伦

Unicode与ASCII引号可能不是最好的区分方式,因为C(")中字符串的正确引号也是Unicode字符。(它们碰巧是ASCII字符,但只要有人在两者之间进行选择,它们的文件就可能以Unicode格式保存。在类似Unix的系统上,通常是UTF-8。)
Eliah Kagan

其他偷偷摸摸的角色代替-
Trevor Boyd Smith,

2

您将字符串用错误的引号引起来。

你有:

Hello World\n

您应该改为:

"Hello World\n"

尽管您使用的引号看起来很相似,但是C编译器不会将它们括在字符串中。因此,您会收到有关无法识别的Unicode字符的错误消息,并且会收到错误消息,表明字符串的内容被解释为未引用的程序代码。

您会注意到,您使用的引号在引号的开头和结尾都有单独的字符(它们是弯曲的,通常是排版引号的方式)。正如Jobin所建议的那样,许多文字处理程序会自动将简单的"引号变成这种引号。如果使用文字处理器编写C程序,则应改用文本编辑器。

Ubuntu gedit默认情况下已安装(尽管也有许多其他文本编辑器可供选择)。像许多文本编辑器,gedit提供语法高亮显示的许多编程语言,包括C(在你的程序,以不同的文字会显示不同的颜色来表示它的意义),这是一个很方便的功能,使一个文本编辑器更方便,更人性化的比文字处理器编程。

如果您习惯于另一个平台上的文本编辑器,该编辑器会自动将粘贴的引号减少为非常用版本,那么这可能是特定于Ubuntu的。但是这个问题最终可能会变得封闭,并迁移到Stack Overflow


问题解决了。我的程序被编译了。tanx很多
Zahid

1

您可以使用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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.