संकलन त्रुटियों को कैसे ठीक करें जो "आवारा '\ 342' और" आवारा '\ 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

मैं इस समस्या को कैसे ठीक करुं?


क्या आपने इस कार्यक्रम को किसी अन्य वर्ड प्रोसेसर या लिबर ऑफिस या माइक्रोसॉफ्ट वर्ड जैसे दस्तावेज़ से कॉपी किया है?
जॉबिन

अगर आपने कहीं से कोड कॉपी किया है तो अपने आप कोड को फिर से लिखें क्योंकि आपने जो कोड कॉपी किया है उसमें कुछ अवांछित कोड हो सकते हैं।

जवाबों:


13

समस्या यह है कि आपके पास ASCII उद्धरण चिह्नों के बजाय यूनिकोड उद्धरण चिह्न हैं; शायद आपके संपादक ने स्वचालित रूप से उन्हें बदल दिया, या आपने उस साइट से पाठ की प्रतिलिपि बनाई जो अपने संलेखन सॉफ्टवेयर में स्वचालित रूप से ऐसा करती है। सामान्य ASCII उद्धरण (0x22, ") के साथ उद्धरण बदलें और यह काम करना चाहिए।

निश्चित स्रोत:

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

+1 मैं सोच रहा था कि वह उन वापस / आगे के उद्धरणों को कैसे प्राप्त कर सकता है।
आरोन

यूनिकोड बनाम एएससीआईआई उद्धरण चिह्नों में अंतर बताने का सबसे अच्छा तरीका नहीं हो सकता है, क्योंकि सी ( ") में स्ट्रिंग्स के लिए सही उद्धरण चिह्न भी यूनिकोड वर्ण हैं। (वे ASCII वर्ण के भी होते हैं, लेकिन कभी भी कोई भी दोनों के बीच चयन करता है, उनकी फ़ाइल संभवतः कुछ यूनिकोड प्रारूप में सहेजी जाती है। एक यूनिक्स जैसी प्रणाली पर, आमतौर पर UTF-8।)
एलिया कगन

अन्य डरपोक चरित्र इसके बजाय हैं -
ट्रेवर बॉयड स्मिथ

2

आप अपने स्ट्रिंग को गलत तरह के उद्धरणों में संलग्न कर रहे हैं।

आपके पास:

Hello World\n

आपको इसके बजाय होना चाहिए:

"Hello World\n"

जबकि आपके द्वारा उपयोग किए गए उद्धरण समान दिखते हैं, वे सी कंपाइलर द्वारा एक स्ट्रिंग को संलग्न करने के रूप में पहचाने नहीं जाते हैं। इस प्रकार, आपको गैर-मान्यता प्राप्त यूनिकोड वर्णों के बारे में त्रुटि संदेश मिलते हैं, और आपको त्रुटि संदेश मिलते हैं जो दिखाते हैं कि स्ट्रिंग की सामग्री को निर्विवाद कार्यक्रम कोड के रूप में व्याख्या किया जा रहा है।

आप ध्यान देंगे कि आपके द्वारा उपयोग किए गए उद्धरणों में एक उद्धरण की शुरुआत और समाप्ति के लिए अलग-अलग वर्ण हैं (वे जिस तरह से उद्धरण अक्सर टाइपसेट होते हैं) घुमावदार हैं। कई वर्ड प्रोसेसर - जैसा कि जॉबिन ने सुझाव दिया है - स्वचालित रूप "से ऐसे फैंसी उद्धरण चिह्नों में सरल उद्धरणों को बदल देंगे । यदि आप C प्रोग्राम्स बनाने के लिए वर्ड प्रोसेसर का उपयोग कर रहे हैं, तो आपको इसके बजाय एक टेक्स्ट एडिटर का उपयोग करना चाहिए।

उबंटू geditडिफ़ॉल्ट रूप से स्थापित के साथ आता है (हालांकि, चुनने के लिए कई अन्य पाठ संपादक भी हैं)। कई पाठ संपादकों की तरह, geditसी (अपने कार्यक्रम में बहुत अलग पाठ अलग अलग रंग में दिखाया गया है इसका अर्थ सूचित करने के लिए होगा) है, जो एक आसान सुविधा है और एक पाठ संपादक बनाता सहित कई प्रोग्रामिंग भाषाओं के लिए वाक्य रचना हाइलाइटिंग प्रदान करता है अधिक सुविधाजनक और उपयोगकर्ता के अनुकूल के लिए एक वर्ड प्रोसेसर की तुलना में प्रोग्रामिंग।

यह उबंटू-विशिष्ट हो सकता है, यदि आप किसी अन्य प्लेटफ़ॉर्म पर एक टेक्स्ट एडिटर के लिए उपयोग किए जाते हैं जो गैर-फैंसी संस्करण में स्वचालित रूप से चिपके हुए उद्धरण चिह्नों को कम करता है। लेकिन यह प्रश्न समाप्त हो सकता है और स्टैक ओवरफ्लो में स्थानांतरित हो सकता है ।


समस्या हल हुई। मेरा कार्यक्रम संकलित है। एक्सएक्सएक्स अलॉट
जाहिद

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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.