“Stray '\ 342'” ve “stray '\ 200” den bahseden derleme hataları nasıl düzeltilir? [kapalı]


9

Bu programı yazdım:

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

Ben olarak kaydetti first.cve derlemeye çalıştı ama bu sorunu ben de gcc derleyici bile yükledim.

$ 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

Bu sorunu nasıl düzeltebilirim?


Bu programı Libre office veya Microsoft Word gibi başka bir kelime işlemciden veya belgeden kopyaladınız mı?
jobin

kodu bir yerden kopyaladıysanız, kopyaladığınız kodun içinde bazı istenmeyen kodlar olabileceğinden kodu kendi başınıza yeniden yazın.

Yanıtlar:


13

Sorun, ASCII tırnak işaretleri yerine Unicode tırnak işaretleri olmasıdır; büyük olasılıkla editörünüz bunları otomatik olarak değiştirdi veya metni otomatik olarak bunu yapan bir siteden yazma yazılımında kopyaladınız. Tırnakları normal ASCII alıntısıyla (0x22, ") değiştirin ve işe yarayacaktır.

Sabit kaynak:

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

+1 Bu geri / ileri teklifleri nasıl aldığını merak ediyordum.
Aaron

Unicode ve ASCII tırnak işaretleri arasındaki farkı belirtmek için en iyi yol olmayabilir, çünkü C ( ") ' deki dizeler için doğru tırnak işaretleri Unicode karakterleridir. (Onlar da kendi dosya muhtemelen bazı Unicode biçiminde kaydedilir, ASCII karakterleri olmak olur ama her zaman birileri ikisi arasında seçim yapacak On bir Unix benzeri sistem genellikle UTF-8..)
Eliah Kagan

yerine diğer sinsi karakterler -.
Trevor Boyd Smith

2

Dizenizi yanlış türde tırnak işaretleri içine alıyorsunuz.

Var:

Hello World\n

Bunun yerine şunlara sahip olmalısınız:

"Hello World\n"

Kullandığınız alıntılar benzer görünse de, C derleyicisi tarafından bir dize içine alınmazlar. Böylece, tanınmayan Unicode karakterlerle ilgili hata iletileri alıyorsunuz ve dizenin içeriğinin tırnaksız program kodu olarak yorumlandığını gösteren hata iletileri alıyorsunuz.

Kullandığınız tırnakların bir teklifi başlatmak ve bitirmek için ayrı karakterleri olduğunu (tırnakların genellikle dizgi biçiminde kıvrıldıkları) not edeceksiniz. Jobin'in önerdiği gibi birçok kelime işlemcisi, basit "tırnak işaretlerini otomatik olarak bu tür tırnak işaretlerine dönüştürecektir. C programları oluşturmak için bir kelime işlemci kullanıyorsanız, bunun yerine bir metin düzenleyici kullanmalısınız.

Ubuntu geditvarsayılan olarak yüklü olarak gelir (aralarından seçim yapabileceğiniz başka birçok metin düzenleyici de olsa). Birçok metin editöründe olduğu gibi, geditC dahil birçok programlama dili için sözdizimi vurgulama sağlar (böylece programınızdaki farklı metin anlamını belirtmek için farklı renklerde gösterilir), bu kullanışlı bir özelliktir ve bir metin düzenleyiciyi daha kullanışlı ve kullanıcı dostu hale getirir . kelime işlemciden daha programlama.

Yapıştırılan teklif işaretlerini süslü olmayan sürüme otomatik olarak azaltan başka bir platformdaki bir metin düzenleyicisine alışkınsanız, bu Ubuntu'ya özgü olabilir. Ancak bu soru kapanıp Yığın Taşması'na geçebilir .


problem çözüldü.my program compiled.tanx çok
Zahid

1

sedBu sorunları gidermek için komutu kullanabilirsiniz .

Bu, nelerin değiştirileceğinin hızlı bir önizlemesini verecektir.

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

Bu, değiştirmeleri yapacak ve değiştirmeyi şu adlı yeni bir dosyaya koyacaktır WithoutSmartQuotes.txt:

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

Bu orijinal dosyanın üzerine yazacaktır:

sed -i .bk -re 's/”|“/"/g' File.txt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.