“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

어딘가에서 코드를 복사 한 경우 복사 한 코드에 원하지 않는 코드가 포함되어있을 수 있으므로 코드를 직접 작성하십시오.

답변:


13

문제는 ASCII 인용 부호 대신 유니 코드 인용 부호가 있다는 것입니다. 편집자가 자동으로 변경했거나 작성 소프트웨어에서 자동으로 수행하는 사이트의 텍스트를 복사했을 수 있습니다. 따옴표를 일반적인 ASCII 따옴표 (0x22, ")로 바꾸면 작동합니다.

고정 소스 :

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

+1 나는 그가 어떻게 거기에 그 뒤로 / 앞으로 따옴표를 넣었는지 궁금했습니다.
Aaron

C ( ")의 문자열에 대한 올바른 인용 부호 도 유니 코드 문자이므로 유니 코드 대 ASCII 인용 부호는 구별을 표시하는 가장 좋은 방법이 아닐 수 있습니다. (이들은 ASCII 문자 일 수도 있지만 누군가가이 두 가지를 선택할 때마다 파일은 아마도 유니 코드 형식으로 저장 될 것입니다. 유닉스 계열 시스템에서는 보통 UTF-8입니다.)
Eliah Kagan

다른 교활한 문자는 대신에 사용됩니다 -.
Trevor Boyd Smith

2

문자열을 잘못된 따옴표로 묶고 있습니다.

당신은 :

Hello World\n

대신에 다음이 있어야합니다.

"Hello World\n"

사용한 따옴표는 비슷해 보이지만 C 컴파일러에서는 문자열을 묶는 것으로 인식되지 않습니다. 따라서 인식 할 수없는 유니 코드 문자에 대한 오류 메시지가 표시되고 문자열의 내용이 인용되지 않은 프로그램 코드로 해석되고 있음을 나타내는 오류 메시지가 나타납니다.

사용한 따옴표에는 따옴표를 시작하고 끝내는 데 별도의 문자가 있습니다 (따옴표는 종종 따옴표가 입력되는 방식에 구부러져 있습니다). Jobin이 제안한 많은 워드 프로세서 자동으로 간단한 "인용 부호를 멋진 인용 부호로 바꿉니다 . C 프로그램을 작성하기 위해 워드 프로세서를 사용하는 경우 대신 텍스트 편집기를 사용해야합니다.

Ubuntu는 gedit기본적 으로 설치되어 제공됩니다 (다른 텍스트 편집기도 선택할 수 있음). 많은 텍스트 편집기와 마찬가지로, gedit편리한 기능이며 텍스트 편집기하게 C (프로그램에서 아주 다른 텍스트의 의미를 나타 내기 위해 다른 색으로 표시됩니다), 등 많은 프로그래밍 언어에 대한 문법 강조 기능을 제공 훨씬 더 편리하고 사용자 친화적 를 들어 워드 프로세서보다 프로그래밍.

붙여 넣은 따옴표를 팬시가 아닌 버전으로 자동 축소하는 다른 플랫폼의 텍스트 편집기에 익숙한 경우 우분투 전용 일 수 있습니다. 그러나이 질문은 결국 닫히고 스택 오버플 로로 마이그레이션 될 수 있습니다 .


problem solved.my 프로그램이 컴파일되었습니다. tanx alot
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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.