ফর্ম্যাটেড আইও ফাংশনে রূপান্তরকরণ% 1 এবং% d এর মধ্যে পার্থক্য কী (* প্রিন্টফ / * স্ক্যানফ)


উত্তর:


276

তারা একই সঙ্গে যেমন আউটপুট জন্য ব্যবহৃত হয় printf

যাইহোক, ইনপুট স্পেসিফার হিসাবে ব্যবহৃত হয় যেমন উদাহরণস্বরূপ scanf, যেখানে %dএকটি সংখ্যার দশমিক সংখ্যা হিসাবে কোনও পূর্ণসংখ্যার স্ক্যান করে তবে %iদশমিকের ডিফল্ট হয় তবে হেক্সাডেসিমেল (পূর্বে যদি থাকে 0x) এবং অষ্টাল (যদি আগে থাকে তবে)0

সুতরাং 03327 সহ %i33 হবে তবে 33 হবে %d


8
এসএসএনএফ-এ সম্ভাব্য শূন্য-প্যাডিংয়ের সাথে কোনও প্রত্যাশা আশা করা আমার কাছে সবচেয়ে যুক্তিসঙ্গত ডিফল্ট আচরণ বলে মনে হয়। আপনি যদি অক্টালের প্রত্যাশা না করেন তবে এটি সূক্ষ্ম বাগের কারণ হতে পারে। সুতরাং এটি আপনাকে পরামর্শ দিচ্ছে যে আপনি যখন নির্বিচারে অষ্টাল এবং / বা হেক্সস পড়তে না চান তবে% d ব্যবহার করার জন্য একটি ভাল নির্দিষ্টকরণকারক।
এলিয়ট

2
আহ! এটা বোধগম্য! এখন আমি, জন্য এই ডকুমেন্টেশন দেখা যায় চেহারা করতে হবে তা জানি যে printfএবং scanf
গ্যাব্রিয়েল স্টেপলস

67

এগুলির জন্য অভিন্ন printfতবে ভিন্ন scanf। জন্য printf, উভয় %dএবং %iএকটি স্বাক্ষরিত দশমিক পূর্ণসংখ্যা নামকরণ। জন্য scanf, %dএবং %iএছাড়াও একটি স্বাক্ষরিত পূর্ণসংখ্যা কিন্তু এর মানে হল %iinteprets একটি হেক্সাডেসিমেল সংখ্যা হিসাবে ইনপুট যদি পূর্বে 0xএবং অকট্যাল যদি পূর্বে 0এবং অন্যথায় দশমিক হিসেবে ইনপুট ব্যাখ্যা করে।


20

এর জন্য %iএবং %dবিন্যাসের স্পেসিফায়ারগুলির মধ্যে কোনও পার্থক্য নেই printf। আমরা খসড়া সি 99 স্ট্যান্ডার্ড বিভাগে গিয়ে দেখতে পাচ্ছি 7.19.6.1 এফপ্রিন্টফ ফাংশন যা printfফর্ম্যাট স্পেসিফায়ারদের সাথে সম্মত হয় এবং এটি অনুচ্ছেদ 8 এ বলে :

রূপান্তর সুনির্দিষ্ট এবং এর অর্থ হ'ল:

এবং নিম্নলিখিত বুলেট অন্তর্ভুক্ত:

d,i     The int argument is converted to signed decimal in the style
        [−]dddd. The precision specifies the minimum number of digits to
        appear; if the value being converted can be represented in fewer
        digits, it is expanded with leading zeros. The default precision is
        1. The result of converting a zero value with a precision of zero is
        no characters.

অন্যদিকে scanfপার্থক্য রয়েছে, %dবেস 10 ধরে নিন এবং %iঅটো বেসটি সনাক্ত করে। আমরা বিভাগে গিয়ে এটি দেখতে পারি 7.19.6.2 fscanf ফাংশন যা scanfফর্ম্যাট স্পেসিফায়ারের সাথে সম্মত হয়েছে, অনুচ্ছেদে 12 অনুচ্ছেদে বলা হয়েছে:

রূপান্তর সুনির্দিষ্ট এবং এর অর্থ হ'ল:

এবং নিম্নলিখিতগুলি অন্তর্ভুক্ত করে:

d     Matches an optionally signed decimal integer, whose format is the
      same as expected for the subject sequence of the strtol function with
      the value 10 for the base argument. The corresponding argument shall
      be a pointer to signed integer.

i     Matches an optionally signed integer, whose format is the same as
      expected for the subject sequence of the strtol function with the
      value 0 for the base argument. The corresponding argument shall be a
      pointer to signed integer.

4

কোনটি নেই printf - দুই প্রতিশব্দের হয়।


6
scanf()স্বীকৃত উত্তর হিসাবে ফর্ম্যাট স্ট্রিং ব্যবহার করার সময় একটি পার্থক্য রয়েছে ।
জে ... এস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.