2013-02-27 8 views
6

पर गैर ASCII वर्णों को इनपुट करना क्या कोई तरीका है जो कोई भी एएससीआई हेक्स वर्ण स्कैनफ में जारी कर सकता है जो %s का उपयोग करता है? मैं \x08\xDE\xAD जैसे हेक्साडेसिमल वर्णों को सम्मिलित करने की कोशिश कर रहा हूं और इसी तरह (बफर ओवरफ़्लो प्रदर्शित करने के लिए)।स्कैनफ ("% s")

इनपुट कमांड लाइन पैरामीटर नहीं है, लेकिन प्रोग्राम के अंदर स्कैनफ़ के लिए है।

+0

तो फिर अपने कार्यक्रम के मानक इनपुट में 'fprintf ("\ 0xDE") क्यों नहीं? –

+2

यदि आप अपने कीबोर्ड पर उन वर्णों को टाइप कर सकते हैं, तो उन्हें काम करना चाहिए। अन्यथा, एक रीडायरेक्ट, './a.out

+0

मेरा पहला संपादन नहीं हुआ था। यदि आप एक कमांड लाइन तर्क था तो आप क्या कह रहे हैं। हालांकि यह एक कमांड लाइन तर्क नहीं है। और जिन पात्रों को मैं प्रिंट करना चाहता हूं वे प्रिंट करने योग्य नहीं हैं। – asudhak

उत्तर

1

जब आप 'scanf()' कहें तो संभवतः यह आपूर्ति करने के लिए अन्य डेटा भी है। क्या यह एक प्रोग्राम, शायद एक पर्ल या पायथन स्क्रिप्ट के लिए काम करेगा, डेटा उत्पन्न करेगा और गैर-ASCII वर्णों को आपके प्रोग्राम के मानक इनपुट में लिख देगा? यदि आपको टर्मिनल की तरह दिखने के लिए मानक इनपुट की आवश्यकता है, तो आपको expect की जांच करनी चाहिए जो आपके लिए इसे संभालती है। यह समस्या से निपटने का एक आम तरीका है।

2

मुझे लगता है कि आप stdin पर मनमानी डेटा फ़ीड करना चाहते हैं (क्योंकि आप scanf के साथ पढ़ते हैं)।

आप डेटा बनाने और इसे अपने प्रोग्राम में पाइप करने के लिए खोल का उपयोग कर सकते हैं, उदा।

printf '\x08\xDE\xAD' | yourprogram 

ध्यान दें कि यह केवल जब तक वहाँ कोई सफेद-अंतरिक्ष पात्रों खिलाया जा करने के लिए (क्योंकि scanf एक %s प्रारूप के साथ सफेद-अंतरिक्ष में बंद हो जाता है) कर रहे हैं काम करेंगे।

+0

यदि आप विंडोज़ पर हैं और 'printf' कमांड नहीं है, तो फ़ाइल बनाएं और इसे' stdin' रीडायरेक्ट करें: 'yourprogram anatolyg

संबंधित मुद्दे