Theory
Marksheet को marksheet जैसा दिखना चाहिए
Marks program अब सब कुछ compute कर सकता है। पर उसका output ransom note जैसा दिखता है: values कहीं भी बिखरी, lines आपस में टकराती।
एक असली marksheet में एक name line होती है, साफ़-सुथरे labels, और result अलग रखा हुआ।
Presentation output statements का काम है, और C आपको अलग-अलग साइज़ के 4 मुँह देता है: printf (कुछ भी कहता है), puts (एक string कहता है, फिर ख़ुद नई line ले लेता है), putchar और putc (बिल्कुल एक character कहते हैं)। इनमें से चुनना exam की पक्की तुलना है।
Theory
उद्घोषक, मुहर, और एक घंटी
printf कार्यक्रम का उद्घोषक है: खाली जगहों वाली script पढ़ता है ("total है ___") और हर खाली जगह आपके variables से live भरता है। puts एक रबर की मुहर है: अपनी एक line छापता है और अपने आप कागज़ नीचे सरका देता है (built-in newline)। putchar एक अकेली घंटी है: एक साफ़ टन, एक character, बस। अलग काम, एक मंच: screen।
At a glance
4 output statements
| Function | क्या print करता है | Newline? |
|---|---|---|
| printf(...) | Text + % से formatted values | सिर्फ़ जब आप \n लिखें |
| puts(str) | एक string | अपनी \n जोड़ता है, हमेशा |
| putchar(ch) | बिल्कुल एक character | कभी नहीं |
| putc(ch, stdout) | एक character (file-flavoured) | कभी नहीं |
Practical
Marksheet, ढंग से सजी हुई
#include <stdio.h>
int main() {
int marks = 78;
char grade = 'A';
puts("===== MARKSHEET =====");
printf("Marks : %d\n", marks);
printf("Grade : %c\n", grade);
putchar('*');
putchar('\n');
return 0;
}This example runs in Gri-Learn on the web, where you can edit it and see the output.
Quiz
puts("Hello") और printf("Hello") में असली फ़र्क़ क्या है?
- puts, Hello के बाद अपने आप newline जोड़ता है; printf नहीं जोड़ता
- printf अपने आप newline जोड़ता है; puts नहीं जोड़ता
- puts variables print कर सकता है; printf नहीं कर सकता
- कोई फ़र्क़ है ही नहीं
Show the answer
puts, Hello के बाद अपने आप newline जोड़ता है; printf नहीं जोड़ता
puts हमेशा अपनी \n जोड़ता है: cursor बिना कहे अगली line पर चला जाता है। printf ठीक वही print करता है जो आपने लिखा, उसी line पर रहते हुए, जब तक format string में \n न हो। (और variables को % से format printf ही करता है; puts सिर्फ़ एक सादी string लेता है।) यह newline वाला फ़र्क़ output-statement का सबसे ज़्यादा पूछा जाने वाला सवाल है।
Think first
Output की भविष्यवाणी कीजिए
ऊपर के code block को line by line चलिए, हर function की newline वाली आदत याद रखते हुए। Reveal से पहले screen का ठीक-ठीक output लिखिए।
Show the answer
===== MARKSHEET =====
Marks : 78
Grade : A
*
puts वाली line ख़ुद ख़त्म होती है; हर printf अपनी \n की वजह से ख़त्म होता है; star की line बंद करने के लिए दूसरा putchar('\n') चाहिए था, putchar कभी नहीं जोड़ता। Newlines को trace कीजिए और predict-the-output के सवाल मुफ़्त marks बन जाते हैं।
Watch out
Marks कहाँ कटते हैं
Variable print करने के लिए printf(marks); लिखना: printf का पहला argument एक format string होना चाहिए, यानी printf("%d", marks);। मिलती values के बिना placeholders (printf("%d %d", marks)) garbage print करते हैं, गिनती मेल खानी चाहिए। और putchar एक ही character print करता है: putchar("Hello") 2-2 तरह से ग़लत है (double quotes, 5 characters)। छोटा syntax, आसान marks, बार-बार का नुक़सान।
Theory
एक छोटा ASCII जादू
putchar एक character लेता है, पर याद रखिए char असल में क्या है: पोशाक पहने एक number। putchar(65) A print करता है, putchar(66) B, सीधे आपकी BCA103 वाली ASCII table से। Exams इसे predict-the-output में चुपके से डालते हैं। इस unit में एक राज़ बाक़ी है: %d, %f, %c और इनके भाई असल में हैं क्या। अगला lesson पूरे placeholder परिवार को decode करता है।
Summary
Key takeaways
- printf: % placeholders के साथ formatted output; newline सिर्फ़ \n से।
- puts: एक string, साथ में एक अपने आप वाली newline, हमेशा।
- putchar/putc: बिल्कुल एक character, कभी newline नहीं।
- printf के placeholders गिनती और type में उसके arguments से मेल खाने चाहिए।
- putchar(65) A print करता है: chars पोशाक पहने ASCII numbers हैं।
- चारों stdio.h में रहते हैं।
- याद रखने का hook: उद्घोषक (printf), मुहर (puts), अकेली घंटी (putchar)।