Lesson 4 — Beginner

Input & Output (printf/scanf)

Program tab tak bekaar hai jab tak user se data le na sake aur result dikha na sake. Is lesson mein hum printf ke format specifiers, scanf ka & wala concept, aur wo common galtiyan dekhenge jo har naye programmer karta hai.

⏱ 13 min• Beginner• Operators

stdio.h — I/O ka base

WHAT

C ka standard input-output stdio.h library se aata hai. printf output dikhata hai, scanf input leta hai. Dono format specifier (%d, %f...) se baat karte hain ki data kis type ka hai.

WHEN

Har program mein — user se value leni ho (marks, naam), ya result dikhana ho (sum, message) — printf/scanf hi use hote hain.

WHERE

Console (terminal) pe default. File ke liye fprintf/fscanf, string ke liye sprintf — same concept, bas target badalta hai.

#include <stdio.h>
int main() {
    printf("Line1\nLine2\n");   // nayi line har \n pe
    printf("Col1\tCol2");       // tab — 4-8 space jaisa gap
    printf("100%% off!");        // % dikhane ke liye %% (double)
    return 0;
}

Output:
Line1
Line2
Col1    Col2100% off!
Yaad rakho: Escape sequences: \n (new line), \t (tab), \\ (backslash), \" (quote), \0 (null terminator). Printf mein literal % ke liye %% likhna padta hai — warna format specifier samajh lega.

printf aur format specifiers

int i = 25; float f = 3.14159; char c = 'A';
char s[] = "DSWallah"; long big = 123456789L;

printf("%d\n", i);        // 25        poora number
printf("%5d|\n", i);      // "   25|"  width 5 (right align)
printf("%-5d|\n", i);     // "25   |"  left align
printf("%.2f\n", f);      // 3.14      2 decimal places
printf("%c %s\n", c, s);  // A DSWallah
printf("%ld\n", big);     // 123456789 (long int)
Pro Tip: Debugging ka purana tareeka: printf("%d %d %d\n", a, b, c); — values turant screen pe. Interview mein bhi examiner isi se samajhta hai ki tumhe code samajh hai.

scanf — input lene ka sahi tarika

#include <stdio.h>
int main() {
    int age;
    char name[50];

    printf("Age batao: ");
    scanf("%d", &age);        // & ZAROORI — address chahiye

    printf("Naam batao: ");
    scanf("%49s", name);      // array ka address pehle se, & nahi

    printf("Age=%d, Naam=%s\n", age, name);
    return 0;
}

Age batao: 21
Naam batao: Rahul
Output: Age=21, Naam=Rahul
Common bug: scanf(" %c", &ch) mein %c se pehle space rakho — warna pehle wala newline character kha jaayega. Aur scanf mein format string mein width likhna bhoolna = buffer overflow ka rasta.

Doosre I/O functions

puts("Hello");          // string print + khud newline
putchar('A');           // ek char print → A
int ch = getchar();      // ek char input (enter tak wait)
putchar(ch);

char buf[100];
fgets(buf, sizeof(buf), stdin);  // SAFE line input
puts(buf);
Function       Kya karta hai
printf/scanf   formatted output/input (most powerful)
puts/gets      string output/input (gets = DANGER, avoid)
fgets/fputs    file+stdin safe line I/O (use this)
getchar        ek char input
putchar        ek char output
sprintf        string ke andar printf (buffer banao)
gets() kabhi mat likho: gets() buffer size nahi dekhta — user ne lamba type kar diya toh memory gir gayi (buffer overflow = hacking ka classic rasta). Isliye C11 mein deprecate ho gaya. fgets fgets hi safe hai.

Exercise

Question: Float value print karne wala format specifier kya hai?

Question: scanf mein variable ka address lene wala operator kaunsa hai?

Question: Nayi line dikhane wala escape sequence — backslash ke baad ka character kaunsa hai?

Question: gets() function kyun avoid kiya jaata hai? (do words — buffer overflow)

Common mistakes

Desi example: Cyber cafe wale ka form style

Cyber cafe mein form bharte waqt bhi wahi hota hai jo C ke scanf mein hota hai — pehle poochho kya chahiye, phir address (kahan rakhna hai) batao:

c
#include <stdio.h>
int main() {
    int roll; char name[30];
    printf("Roll aur Naam: ");
    scanf("%d %s", &roll, name);
    printf("Roll %d — %s\n", roll, name);
    return 0;
}
Roll aur Naam: 101 Priya
Output: Roll 101 — Priya
Exam mapping (TCS / College)
  • TCS NQT: format specifier matching + & wale traps — 1-2Q fixed.
  • College exam: marks card program (scanf se input, printf se formatted output).
  • Interview: gets() kyun unsafe — ye classic follow-up question hai.
  • Trap: printf("%d", 3.5) — type mismatch se output garbage, compiler aksar chup rehta hai.
Lesson complete?

I/O aata hai. Agla lesson — Conditionals — mein seekhenge program ko decision lena kaise sikhate hain (if/else/switch).

Popular courses: Data Science Course in Lucknow · AI Course in Lucknow · Python Course in Lucknow · Power BI Course · Data Analytics Course