Saya menulis program ini:
#include<stdio.h>
int main()
{
printf(“Hello World\n”);
return 0;
}
Saya menyimpannya sebagai first.c
dan mencoba mengkompilasi tetapi menerima masalah ini saya telah menginstal kompiler gcc juga.
$ 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
Bagaimana saya bisa memperbaiki masalah ini?
Jawaban:
Masalahnya adalah Anda memiliki tanda kutip Unicode alih-alih tanda kutip ASCII; mungkin editor Anda secara otomatis mengubahnya, atau Anda menyalin teks dari situs yang melakukan ini secara otomatis dalam perangkat lunak pembuatnya. Ganti kutipan dengan kutipan ASCII normal (0x22, ") dan itu akan berfungsi.
Sumber tetap:
sumber
"
) adalah karakter Unicode juga. (Mereka juga merupakan karakter ASCII tetapi setiap kali seseorang memilih di antara keduanya, file mereka mungkin disimpan dalam beberapa format Unicode. Pada sistem mirip Unix, biasanya UTF-8.)–
bukan-
.Anda melampirkan string Anda dalam jenis kutipan yang salah.
Kamu punya:
Anda seharusnya memiliki:
Meskipun kutipan yang Anda gunakan terlihat serupa, mereka tidak dikenali oleh kompiler C sebagai melampirkan string. Dengan demikian, Anda mendapatkan pesan kesalahan tentang karakter Unicode yang tidak dikenali, dan Anda mendapatkan pesan kesalahan yang menunjukkan bahwa isi string sedang ditafsirkan sebagai kode program yang tidak dikutip.
Anda akan mencatat bahwa tanda kutip yang Anda gunakan memiliki karakter yang terpisah untuk memulai dan mengakhiri kutipan (mereka melengkung seperti tanda kutip sering mengeset). Banyak pengolah kata - seperti yang disarankan Jobin - akan secara otomatis mengubah
"
kutipan sederhana menjadi tanda kutip mewah. Jika Anda menggunakan pengolah kata untuk membuat program C, Anda harus menggunakan editor teks.Ubuntu dilengkapi dengan yang
gedit
terinstal secara default (walaupun ada banyak editor teks lain untuk dipilih juga). Seperti banyak editor teks,gedit
menyediakan penyorotan sintaks untuk banyak bahasa pemrograman termasuk C (jadi teks yang berbeda dalam program Anda akan ditampilkan dalam warna yang berbeda untuk menandakan artinya), yang merupakan fitur yang berguna dan membuat editor teks jauh lebih nyaman dan ramah pengguna untuk pemrograman dari pengolah kata.Ini mungkin khusus Ubuntu, jika Anda terbiasa dengan editor teks pada platform lain yang secara otomatis mengurangi tanda kutip yang ditempelkan ke versi yang tidak mewah. Tetapi pertanyaan ini mungkin akhirnya ditutup dan dimigrasi ke Stack Overflow .
sumber
Anda dapat menggunakan
sed
perintah untuk memperbaiki masalah ini.Ini akan memberi Anda pratinjau cepat tentang apa yang akan diganti.
Ini akan melakukan penggantian dan menempatkan penggantian dalam file baru bernama
WithoutSmartQuotes.txt
:Ini akan menimpa file asli:
sumber