دوره‌ها / آموزش برنامه‌نویسی C / خروجی گرفتن (C Output)

خروجی گرفتن (C Output)

20 دقیقه Article

خروجی در C: صحبت با دنیایِ بیرون 🗣️📺

تابعِ printf() ابزارِ اصلیِ شما برایِ نمایشِ اطلاعات است. اما این تابع فقط برایِ چاپِ متنِ ساده نیست؛ قدرتِ واقعیِ آن در فرمت‌بندی است.

۱. کاراکترهایِ کنترلی (Escape Sequences)

برایِ ایجادِ تغییر در ساختارِ متن خروجی:

  • \n: ایجادِ خطِ جدید (New Line).
  • \t: ایجادِ فاصله افقی (Tab).
  • \\: چاپِ خودِ کاراکترِ بک‌اسلش.
  • \": چاپِ کوتیشن داخلِ متن.

۲. فرمت‌کننده‌ها (Format Specifiers):

وقتی می‌خواهید مقدارِ یک متغیر را چاپ کنید، باید از علامتِ % استفاده کنید:

  • %d: برایِ اعدادِ صحیح (Integer).
  • %f: برایِ اعدادِ اعشاری (Float).
  • %c: برایِ تک‌کاراکتر (Character).
  • %s: برایِ رشته‌ها (String).

مثالِ ترکیبی:

{code_block('int age = 25;\nprintf("I am %d years old.\n", age);')}
چاپِ چندگانه: شما می‌توانید چند متغیر را در یک خط چاپ کنید. ترتیبِ متغیرها در انتهایِ تابع باید دقیقاً با ترتیبِ علامت‌هایِ % در متن برابر باشد.
دقتِ اعشار: برایِ محدود کردنِ تعدادِ ارقامِ بعد از اعشار در خروجی، از %.2f استفاده کنید (این یعنی فقط ۲ رقمِ اعشار نمایش داده شود).
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: کالبدشکافیِ اجرایِ یک برنامه C 🛠️⚙️⚡

زبانِ C زبانِ نزدیک به سخت‌افزار است. درکِ اینکه چطور کدهایِ متنیِ شما به سیگنال‌هایِ الکتریکی در CPU تبدیل می‌شوند، اولین قدم برایِ تبدیل شدن به یک مهندسِ حرفه‌ای است.

۱. خطِ لوله (Pipeline) کامپایل

فرایندِ تبدیل کدِ C به فایلِ اجرایی (Executable) چهار مرحله‌یِ حیاتی دارد:

  • پیش‌پردازش (Preprocessing): دستوراتی که با # شروع می‌شوند (مثل #include) پردازش می‌شوند. کدهایِ هدر به فایلِ اصلی چسبانده می‌شوند.
  • کامپایل (Compilation): کدهایِ سطحِ بالایِ C به زبانِ اسمبلی (Assembly) تبدیل می‌شوند که برایِ معماریِ آن CPU خاص (مثل x86 یا ARM) قابل فهم باشد.
  • اسمبلی (Assembly): کدهایِ اسمبلی به کدهایِ ماشین (Binary) تبدیل می‌شوند. نتیجه یک فایلِ .obj یا .o است.
  • لینک کردن (Linking): تمامِ فایل‌هایِ آبجکت و کتابخانه‌هایِ استاندارد (مثل stdio.h) به هم متصل می‌شوند تا یک فایلِ نهایی (مثل .exe) ساخته شود.

۲. ساختارِ حافظه در زمانِ اجرا (Runtime Memory)

وقتی برنامه‌یِ شما اجرا می‌شود، از چهار بخشِ اصلی در حافظه استفاده می‌کند:

  1. Text Segment: محلِ نگهداریِ دستوراتِ اجراییِ برنامه (کدهای ماشین).
  2. Data Segment: برایِ نگهداریِ متغیرهایِ سراسری (Global) و استاتیک.
  3. Stack: برایِ نگهداریِ متغیرهایِ محلی و پارامترهایِ توابع مدیریت می‌شود. این بخش سریع است اما فضایِ محدودی دارد.
  4. Heap: برایِ مدیریتِ حافظه‌یِ داینامیک (که با malloc رزرو می‌کنید). این بزرگترین بخشِ حافظه‌یِ در دسترس است.
نکته مهندسی: در C هیچ "Garbage Collector"ای وجود ندارد! برخلافِ پایتون یا جاوا، مدیریتِ هر بیت از حافظه بر عهده‌یِ شماست. این قدرتِ مطلق، مسئولیتِ بزرگی هم به همراه دارد (جلوگیری از Memory Leak).

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

چاپ خط جدید Medium
سوال تمرین

برنامه‌ای بنویسید که کلمه‌ی Line1 را در خط اول و Line2 را در خط دوم چاپ کند.

پاسخ تمرین
C
#include <stdio.h>

int main() {
  printf("Line1\nLine2");
  return 0;
}

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.