¿Cómo corregir los errores de compilación que mencionan “stray '\ 342'” y “stray '\ 200'”? [cerrado]

9

Escribí este programa:

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

Lo guardé como first.ce intenté compilar, pero al recibir este problema también he instalado el compilador 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

¿Como puedo solucionar este problema?

Zahid
fuente
¿Copió este programa de algún otro procesador de textos o documento como Libre office o Microsoft Word?
jobin
Si ha copiado el código desde algún lugar, vuelva a escribir el código por su cuenta, ya que el código que ha copiado puede tener algunos códigos no deseados incrustados en él.

Respuestas:

13

El problema es que tiene comillas Unicode en lugar de comillas ASCII; probablemente su editor los cambió automáticamente, o usted copió el texto de un sitio que hace esto automáticamente en su software de autoría. Reemplace las comillas con comillas ASCII normales (0x22, ") y debería funcionar.

Fuente fija:

#include <stdio.h>
int main()
{
    printf("Hello World\n");
    return 0;
}
Krzysztof Kosiński
fuente
+1 Me preguntaba cómo consiguió esas citas de ida y vuelta.
Aaron
Las comillas Unicode vs. ASCII podrían no ser la mejor manera de establecer la distinción, ya que las comillas correctas para las cadenas en C ( ") también son caracteres Unicode. ( También resultan ser caracteres ASCII, pero cada vez que alguien elige entre los dos, su archivo probablemente se guarda en algún formato Unicode. En un sistema similar a Unix, generalmente UTF-8.)
Eliah Kagan
otros personajes furtivos son el en lugar del -.
Trevor Boyd Smith
2

Estás encerrando tu cadena en el tipo incorrecto de comillas.

Tienes:

Hello World\n

En cambio, deberías tener:

"Hello World\n"

Si bien las citas que ha utilizado son similares, un compilador de C no reconoce que encierran una cadena. Por lo tanto, recibe mensajes de error sobre caracteres Unicode no reconocidos, y recibe mensajes de error que muestran que el contenido de la cadena se interpreta como código de programa sin comillas.

Notará que las comillas que ha usado tienen caracteres separados para comenzar y finalizar una cita (están curvadas de la forma en que las comillas a menudo se componen). Muchos procesadores de texto, como sugirió Jobin, convertirán automáticamente las "comillas simples en comillas elegantes. Si está utilizando un procesador de textos para componer programas en C, debería usar un editor de texto.

Ubuntu viene geditinstalado por defecto (aunque también hay muchos otros editores de texto para elegir). Al igual que muchos editores de texto, geditproporciona resaltado de sintaxis para muchos lenguajes de programación, incluido C (por lo que se mostrará texto diferente en su programa en diferentes colores para indicar su significado), que es una característica práctica y hace que un editor de texto sea mucho más conveniente y fácil de usar para programación que un procesador de textos.

Esto podría ser específico de Ubuntu, si está acostumbrado a un editor de texto en otra plataforma que reduce automáticamente las comillas pegadas a la versión no elegante. Pero esta pregunta podría terminar cerrándose y migrando a Stack Overflow .

Eliah Kagan
fuente
problema resuelto.Mi programa está compilado.tanx mucho
Zahid
1

Puede usar el sedcomando para solucionar estos problemas.

Esto le dará una vista previa rápida de lo que será reemplazado.

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

Esto hará los reemplazos y colocará el reemplazo en un nuevo archivo llamado WithoutSmartQuotes.txt:

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

Esto sobrescribirá el archivo original:

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