मैंने ';' का उपयोग करके इनपुट स्ट्रिंग को विभाजित करने के लिए एक प्रोग्राम लिखा टर्मिनेटर के रूप में और स्ट्रिंग के हिस्से को प्रिंट करें जो ';' के बाद है। जब भी निम्नलिखित घटते हैं, कार्यक्रम सही आउटपुट दिखाता है ';' इनपुट स्ट्रिंग में वैध टर्मिनल कमांड नहीं है लेकिन command not found
प्रिंट करता है। दूसरी तरफ, जब यह सबस्ट्रिंग ';' के बाद होता है तो यह कुछ भी प्रिंट नहीं करता है एक वैध टर्मिनल कमांड है और सबस्ट्रिंग को कमांड के रूप में निष्पादित करता है, उदा। इनपुट के मामले में "sjhjh; ls" यह ls कमांड निष्पादित करेगा।';' इनपुट में चरित्र का गलत व्याख्या किया जा रहा है
मैं command not found
भाग से कैसे छुटकारा पा सकता हूं? यहाँ कोड है:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char * input;
char * str;
char * word;
char terminator = ';';
if (argc < 2) {
fprintf(stderr,"ERROR, no string provided\n");
exit(1);
}
input = argv[1];
word = strchr(input, terminator);
if (word != NULL) printf("%s\n", word);
return 0;
}
दोस्तों, इस प्रश्न को कम मत करें। यह वास्तव में खोल और एक आवेदन के बीच इंटरप्ले का एक दुर्लभ और दिलचस्प उदाहरण है। – DyZ
एक टैग –
@DYZ के रूप में खोल का नाम जोड़ने का सुझाव देता है, मैं डाउनवोट नहीं करूँगा, लेकिन यह वास्तव में डीबगर का उपयोग न करने या एमसीवीई नहीं बनाने का एक उदाहरण है। अन्यथा यह स्पष्ट होगा कि टेक्स्ट मुख्य रूप से 'argv' तक नहीं पहुंचता है और प्रश्न में पूरी तरह से अलग फोकस हो सकता है। – grek40