beginner#input#outputUpdated: 2026-05-13

ইনপুট আউটপুট (Input/Output)


১. ভূমিকা — দোকানে টাকা দাও, পণ্য পাও

তুমি একটি দোকানে গেলে:

  • তুমি টাকা দাও → Input
  • দোকানদার পণ্য দেয় → Output

কম্পিউটারও একইভাবে কাজ করে:

  • তুমি কিছু দাও (কীবোর্ডে টাইপ) → Input
  • কম্পিউটার ফলাফল দেখায় → Output

C প্রোগ্রামে এই কাজ করে scanf() এবং printf()


২. সমস্যা — Fixed মান দিয়ে প্রোগ্রাম কি সবার কাজে লাগে?

প্রোগ্রাম যদি শুধু fixed মান দিয়ে কাজ করে:

int age = 17;  // সবসময় 17

তাহলে তা শুধু একজনের জন্য কাজ করে।

কিন্তু যদি ব্যবহারকারী নিজে মান দিতে পারে — তাহলে প্রোগ্রাম সবার জন্য কাজ করে।

এই সমস্যার সমাধান হলো Input/Output (I/O)


৩. চিত্রের মাধ্যমে বোঝো

ব্যবহারকারী                কম্পিউটার
    │                           │
    │── কীবোর্ডে টাইপ ─────────►│ scanf() → Variable-এ রাখো
    │                           │
    │◄──── স্ক্রিনে দেখাও ───── │ printf() ← Variable থেকে নাও
    │                           │

Standard I/O:
stdin  (keyboard) → scanf
stdout (monitor)  → printf
stderr (monitor)  → error messages

৪. বাস্তব জীবনের সাথে মিল

টেলিফোন বুথ ভাবো:

  • printf() = মাইক্রোফোন (তুমি কথা বলো, অন্যরা শোনে)
  • scanf() = কান/রিসিভার (অন্যরা কথা বলে, তুমি শোনো)
  • %d, %f, %c = কোন ভাষায় কথা বলতে হবে তার নির্দেশনা

Module 1: সংজ্ঞা ও ধারণা

printf() — আউটপুট ফাংশন

printf("format string", variable1, variable2, ...);

scanf() — ইনপুট ফাংশন

scanf("format string", &variable1, &variable2, ...);

Format Specifiers:

SpecifierData Typeউদাহরণ
%dintprintf("%d", 17)17
%ffloatprintf("%f", 3.14)3.140000
%.2ffloat (2 দশমিক)printf("%.2f", 3.14)3.14
%lfdoublescanf("%lf", &d)
%ccharprintf("%c", 'A')A
%sstringprintf("%s", "Hello")Hello

Escape Sequences:

Sequenceঅর্থ
\nনতুন লাইন
\tTab (৪/৮ স্পেস)
\\Backslash প্রিন্ট
\"Double quote প্রিন্ট
%%% চিহ্ন প্রিন্ট

Module 2: কীভাবে কাজ করে

printf("নম্বর: %d\n", 95);

ধাপ ১: "নম্বর: " → সরাসরি প্রিন্ট
ধাপ ২: %d → 95 কে দশমিক সংখ্যা হিসেবে প্রিন্ট
ধাপ ৩: \n → cursor নতুন লাইনে যায়

স্ক্রিনে:
নম্বর: 95
(নতুন লাইনে cursor)
scanf("%d", &age);

ধাপ ১: কীবোর্ড থেকে ইনপুট অপেক্ষা করো
ধাপ ২: "17" টাইপ করে Enter চাপলে
ধাপ ৩: "17" কে int-এ রূপান্তর করো
ধাপ ৪: age-এর Memory Address-এ (& চিহ্ন) রাখো

Module 3: প্যাটার্ন ও উদাহরণ

প্যাটার্ন ১: printf — বিভিন্ন Format

উদাহরণ ১.১: একাধিক Variable প্রিন্ট

#include <stdio.h>

int main() {
    int age = 17;
    float gpa = 4.75;
    char grade = 'A';
    
    printf("বয়স: %d বছর\n", age);
    printf("GPA: %.2f\n", gpa);
    printf("গ্রেড: %c\n", grade);
    return 0;
}

আউটপুট:

বয়স: 17 বছর
GPA: 4.75
গ্রেড: A

উদাহরণ ১.২: একই লাইনে একাধিক মান

#include <stdio.h>

int main() {
    int a = 5, b = 3;
    printf("%d + %d = %d\n", a, b, a + b);
    printf("%d - %d = %d\n", a, b, a - b);
    printf("%d × %d = %d\n", a, b, a * b);
    return 0;
}

আউটপুট:

5 + 3 = 8
5 - 3 = 2
5 × 3 = 15

উদাহরণ ১.৩: সুন্দর টেবিল প্রিন্ট

#include <stdio.h>

int main() {
    printf("%-15s %5s %6s\n", "নাম", "রোল", "নম্বর");
    printf("%-15s %5d %6.1f\n", "রাহিম", 1, 87.5);
    printf("%-15s %5d %6.1f\n", "করিম", 2, 92.0);
    printf("%-15s %5d %6.1f\n", "জামিলা", 3, 78.5);
    return 0;
}

আউটপুট:

নাম             রোল  নম্বর
রাহিম             1   87.5
করিম              2   92.0
জামিলা            3   78.5

প্যাটার্ন ২: scanf — বিভিন্ন Input

উদাহরণ ২.১: একটি integer ইনপুট

#include <stdio.h>

int main() {
    int n;
    printf("একটি সংখ্যা দাও: ");
    scanf("%d", &n);
    printf("তুমি দিয়েছো: %d\n", n);
    printf("তার বর্গ: %d\n", n * n);
    return 0;
}

উদাহরণ ২.২: একাধিক Variable ইনপুট

#include <stdio.h>

int main() {
    int age;
    float height;
    char gender;
    
    printf("বয়স: ");
    scanf("%d", &age);
    printf("উচ্চতা (ফুট): ");
    scanf("%f", &height);
    printf("লিঙ্গ (M/F): ");
    scanf(" %c", &gender);  // space দিলে whitespace skip হয়
    
    printf("\n--- তথ্য ---\n");
    printf("বয়স: %d বছর\n", age);
    printf("উচ্চতা: %.1f ফুট\n", height);
    printf("লিঙ্গ: %c\n", gender);
    return 0;
}

উদাহরণ ২.৩: একসাথে দুটি সংখ্যা ইনপুট

#include <stdio.h>

int main() {
    int a, b;
    printf("দুটি সংখ্যা দাও (space দিয়ে আলাদা করো): ");
    scanf("%d %d", &a, &b);
    printf("যোগফল: %d\n", a + b);
    printf("গুণফল: %d\n", a * b);
    return 0;
}

প্যাটার্ন ৩: Formatted Output

উদাহরণ ৩.১: Width Formatting

#include <stdio.h>

int main() {
    // %5d → ন্যূনতম 5 অক্ষর প্রশস্ততা (ডান-সারি)
    printf("[%5d]\n", 42);     // [   42]
    printf("[%-5d]\n", 42);    // [42   ] (বাম-সারি)
    printf("[%05d]\n", 42);    // [00042] (শূন্য দিয়ে পূর্ণ)
    return 0;
}

আউটপুট:

[   42]
[42   ]
[00042]

উদাহরণ ৩.২: Float Precision

#include <stdio.h>

int main() {
    float pi = 3.14159265;
    printf("%.0f\n", pi);   // 3
    printf("%.1f\n", pi);   // 3.1
    printf("%.2f\n", pi);   // 3.14
    printf("%.4f\n", pi);   // 3.1416
    printf("%.6f\n", pi);   // 3.141593
    return 0;
}

আউটপুট:

3
3.1
3.14
3.1416
3.141593

উদাহরণ ৩.৩: Escape Sequences ব্যবহার

#include <stdio.h>

int main() {
    printf("লাইন ১\nলাইন ২\nলাইন ৩\n");
    printf("কলাম১\tকলাম২\tকলাম৩\n");
    printf("সে বলল: \"হ্যালো!\"\n");
    printf("পথ: C:\\Users\\rahim\\\n");
    printf("ছাড়: ১০%%\n");
    return 0;
}

আউটপুট:

লাইন ১
লাইন ২
লাইন ৩
কলাম১	কলাম২	কলাম৩
সে বলল: "হ্যালো!"
পথ: C:\Users\rahim\
ছাড়: ১০%

প্যাটার্ন ৪: String Input/Output

উদাহরণ ৪.১: একটি শব্দ ইনপুট

#include <stdio.h>

int main() {
    char name[50];
    printf("তোমার নাম: ");
    scanf("%s", name);         // & লাগে না array-এ
    printf("হ্যালো, %s!\n", name);
    return 0;
}

উদাহরণ ৪.২: পুরো বাক্য ইনপুট (space সহ)

#include <stdio.h>

int main() {
    char sentence[100];
    printf("একটি বাক্য লেখো: ");
    fgets(sentence, sizeof(sentence), stdin);
    printf("তুমি লিখেছো: %s", sentence);
    return 0;
}

Module 4: বাস্তব প্রয়োগ

পরিস্থিতিI/O ব্যবহার
ক্যালকুলেটরscanf: সংখ্যা নাও, printf: ফলাফল দেখাও
পরীক্ষার ফলাফলscanf: নম্বর নাও, printf: গ্রেড দেখাও
ATMscanf: PIN নাও, printf: ব্যালেন্স দেখাও
ফর্ম পূরণscanf: তথ্য নাও, printf: নিশ্চিতকরণ দেখাও
গেম স্কোরscanf: নাম নাও, printf: স্কোর দেখাও

Module 5: সাধারণ ভুল ও সতর্কতা

ভুল ১: scanf-এ & ভুলে যাওয়া

❌ ভুল:
int age;
scanf("%d", age);    // Crash! & ছাড়া

✅ সঠিক:
scanf("%d", &age);   // & দিয়ে address পাস

ভুল ২: ভুল Format Specifier

❌ ভুল:
float gpa = 4.5;
printf("%d", gpa);   // garbage output!

✅ সঠিক:
printf("%f", gpa);   // 4.500000
printf("%.2f", gpa); // 4.50

ভুল ৩: char ইনপুটে whitespace সমস্যা

❌ সমস্যা:
int age;
char grade;
scanf("%d", &age);
scanf("%c", &grade);  // Enter key '\n' ধরে নেয়!

✅ সমাধান:
scanf("%d", &age);
scanf(" %c", &grade);  // space দিয়ে whitespace skip করো

ভুল ৪: % প্রিন্টে %% ভুলে যাওয়া

❌ ভুল:
printf("ছাড়: 10%");   // Warning বা ভুল output

✅ সঠিক:
printf("ছাড়: 10%%");  // ছাড়: 10%

ভুল ৫: String-এ & দেওয়া

❌ ভুল:
char name[50];
scanf("%s", &name);   // Warning!

✅ সঠিক:
scanf("%s", name);    // Array name নিজেই pointer

Module 6: সুবিধা-অসুবিধা

Functionসুবিধাসীমাবদ্ধতা
printfনমনীয় formattingদীর্ঘ format string জটিল
scanfসরাসরি variable-এwhitespace সমস্যা
gets (পুরনো)সহজBuffer overflow ঝুঁকি (বাদ)
fgetsনিরাপদএকটু জটিল

🔁 নিজে পরীক্ষা করো

MCQ:

১. printf ফাংশনে %f কোন ডেটা টাইপের জন্য?

  • ক) int
  • খ) float ✓
  • গ) char
  • ঘ) double

২. scanf("%d", age); — এতে কী সমস্যা?

  • ক) %d ভুল
  • খ) & নেই ✓
  • গ) age নেই
  • ঘ) কোনো সমস্যা নেই

৩. \n কী কাজ করে?

  • ক) Tab দেয়
  • খ) নতুন লাইনে যায় ✓
  • গ) NULL দেয়
  • ঘ) Backslash প্রিন্ট করে

৪. printf("%.2f", 3.14159) কী প্রিন্ট করবে?

  • ক) 3.14159
  • খ) 3.14 ✓
  • গ) 3.1
  • ঘ) 3

৫. char ইনপুটের আগে scanf-এ space কেন দিতে হয়?

  • ক) বাধ্যতামূলক
  • খ) আগের Enter/whitespace এড়াতে ✓
  • গ) Format error
  • ঘ) কোনো কারণ নেই

সংক্ষিপ্ত প্রশ্ন:

৬. printf এবং scanf-এর মধ্যে পার্থক্য উদাহরণসহ ব্যাখ্যা করো।

৭. Format Specifiers %d, %f, %c, %s প্রতিটি কোন Data Type-এর জন্য?


📝 HSC পরীক্ষার প্রস্তুতি

১. scanf-এ & কেন দিতে হয়? printf-এ কেন লাগে না?

২. %.2f এবং %f-এর মধ্যে পার্থক্য কী? কখন কোনটি ব্যবহার করবে?

৩. যদি তুমি পুরো নাম (প্রথম ও শেষ নাম) ইনপুট নিতে চাও, scanf("%s") কেন কাজ করবে না? সমাধান কী?


🎯 অনুশীলন প্রশ্ন

সহজ: তিনটি সংখ্যা ইনপুট নাও এবং তাদের যোগফল, গুণফল, এবং গড় দেখাও (2 দশমিক পর্যন্ত)।

মাঝারি: শিক্ষার্থীর নাম, রোল, পাঁচ বিষয়ের নম্বর ইনপুট নাও। মোট নম্বর এবং গড় বের করে সুন্দর টেবিলে দেখাও।

কঠিন: একটি ক্যালকুলেটর প্রোগ্রাম: দুটি float সংখ্যা এবং একটি অপারেটর (+,-,*,/) ইনপুট নাও। ফলাফল 4 দশমিক পর্যন্ত দেখাও।


✅ সারাংশ

🎯 মনে রেখো:

  • printf() = আউটপুট দেখাও (keyboard → screen)
  • scanf() = ইনপুট নাও (variable-এ রাখো)
  • Format Specifiers: %d(int), %f(float), %c(char), %s(string)
  • Escape: \n(নতুন লাইন), \t(tab), %%(% প্রিন্ট)
  • scanf-এ variable-এর আগে & দিতে হবে (array ছাড়া)
  • char ইনপুটের আগে space দাও: scanf(" %c", &ch)
  • Float precision: %.2f = 2 দশমিক পর্যন্ত

💡 পরীক্ষার টিপস: scanf-এ & এবং char-এ space — এই দুটি সবচেয়ে বেশি ভুল হয়। Format Specifier-এর সাথে Data Type মেলানো জরুরি।