ویژگی تصویر

ورودی ها در زبان سی

  /  زبان برنامه نویسی C   /  ورودی ها در C
بنر تبلیغاتی الف
زبان برنامه نویسی C

در این بخش به بررسی ورودی ها در C می پردازیم، زبان C یکی از زبان‌های برنامه‌نویسی پایه‌ای و قدرتمند است که به دلیل سادگی و کارایی بالا همچنان در بسیاری از زمینه‌ها کاربرد دارد. یکی از مفاهیم مهم در این زبان، کار با ورودی‌ها (Input) است. مدیریت ورودی‌ها در C امکان تعامل برنامه با کاربران را فراهم می‌کند و به ما اجازه می‌دهد داده‌هایی از کاربر دریافت کرده و با آن‌ها عملیات مختلفی انجام دهیم.

در این مقاله، به بررسی مفاهیم مرتبط با ورودی در زبان C می‌پردازیم. ابتدا با مفاهیم پایه و انواع توابع ورودی آشنا خواهیم شد، سپس روش‌های مختلف دریافت داده از کاربر را بررسی می‌کنیم. همچنین، کدهای نمونه ارائه می‌دهیم تا درک این مفاهیم برای شما ساده‌تر شود.

۱. مفهوم ورودی در زبان C

ورودی در برنامه‌نویسی به معنای دریافت داده از کاربر یا منابع خارجی است. در زبان C، ورودی‌ها معمولاً از طریق صفحه‌کلید وارد می‌شوند، اما می‌توانند از فایل‌ها یا دیگر منابع نیز باشند. برای کار با ورودی‌ها، از توابع استانداردی که در کتابخانه <stdio.h> تعریف شده‌اند، استفاده می‌شود.

این توابع برای دریافت داده‌ها به انواع مختلف، مانند عدد صحیح، عدد اعشاری یا رشته‌های متنی، کاربرد دارند. زبان C به دلیل نزدیکی به سخت‌افزار و کنترل دقیق بر حافظه، نیازمند دقت بیشتری در دریافت و مدیریت ورودی‌هاست.

۲. توابع اصلی ورودی در زبان C

دو تابع اصلی برای دریافت ورودی از کاربر در زبان C عبارت‌اند از:

  • scanf: برای دریافت مقادیر با قالب‌های مختلف از کاربر.
  • getchar و gets: برای دریافت کاراکترها و رشته‌ها.

الف) تابع scanf

تابع scanf یکی از پرکاربردترین توابع برای دریافت ورودی از کاربر است. این تابع داده‌ها را با قالب مشخصی از ورودی دریافت می‌کند. قالب ورودی با استفاده از specifierها تعریف می‌شود:

  • %d برای اعداد صحیح
  • %f برای اعداد اعشاری
  • %c برای کاراکترها
  • %s برای رشته‌ها

مثال:

تماشا در حالت تمام صفحه

توضیح:

  • scanf عددی که کاربر وارد می‌کند را به متغیر number اختصاص می‌دهد.
  • استفاده از & (آدرس متغیر) برای اشاره به محل ذخیره‌سازی داده ضروری است.

ب) تابع getchar

این تابع برای دریافت یک کاراکتر از ورودی استفاده می‌شود. getchar بسیار ساده است و تنها یک کاراکتر را برمی‌گرداند.

مثال:

تماشا در حالت تمام صفحه

توضیح:

  • این تابع برای دریافت ورودی‌های کوچک یا ساده مناسب است.

ج) تابع gets (Deprecated)

تابع gets برای دریافت رشته‌های متنی استفاده می‌شد، اما به دلیل مشکلات امنیتی دیگر توصیه نمی‌شود. به جای آن، از fgets استفاده کنید.

۳. مدیریت رشته‌ها در ورودی

کار با رشته‌ها در C نیازمند دقت بالاست. رشته‌ها آرایه‌ای از کاراکترها هستند و مدیریت صحیح حافظه در کار با آن‌ها اهمیت دارد. تابع fgets گزینه‌ای مناسب برای دریافت رشته‌هاست، زیرا محدودیت طول ورودی را مشخص می‌کند.

مثال با fgets:

تماشا در حالت تمام صفحه

توضیح:

  • آرایه name برای ذخیره رشته استفاده شده است.
  • fgets از بروز خطای buffer overflow جلوگیری می‌کند.

۴. خطاهای رایج در دریافت ورودی

هنگام استفاده از توابع ورودی در C، برخی خطاهای رایج ممکن است رخ دهند:

  1. عدم استفاده از آدرس متغیر در scanf:
scanf("%d", number); // اشتباه
scanf("%d", &number); // صحیح
  1. باقی‌ماندن کاراکترهای اضافی در بافر ورودی: وقتی کاراکترهای اضافی (مانند \n) در ورودی باقی بمانند، ممکن است تابع بعدی آن‌ها را بخواند. برای پاکسازی بافر، می‌توان از حلقه استفاده کرد:
while(getchar() != '\n');
  1. مشکلات امنیتی در gets: همان‌طور که ذکر شد، از gets استفاده نکنید و به جای آن از fgets بهره بگیرید.

۵. ورودی‌های پیشرفته: دریافت داده‌های مختلف

زبان C قابلیت دریافت ورودی‌های پیچیده‌تر را نیز دارد. برای مثال، می‌توان چندین مقدار را به طور همزمان دریافت کرد یا ورودی‌ها را از فایل‌ها خواند.

الف) دریافت چند مقدار با scanf

تماشا در حالت تمام صفحه

ب) دریافت ورودی از فایل

تماشا در حالت تمام صفحه

در این مقاله، مفهوم ورودی در زبان C و روش‌های مختلف دریافت داده از کاربر یا منابع دیگر را بررسی کردیم. درک درست این مفاهیم به شما کمک می‌کند برنامه‌هایی کاربرپسند و کارآمد بنویسید. توابع مختلفی مانند scanf، getchar و fgets هر یک برای مقاصد خاصی کاربرد دارند. با تمرین و استفاده از مثال‌های عملی می‌توانید این مهارت را تقویت کنید.

منابع

  • کتاب “C Programming Language” نوشته کرنیگان و ریچی
  • مستندات رسمی زبان C
  • وب‌سایت GeeksforGeeks

آیا این مطلب برای شما مفید بود ؟

خیر
بله
بنر تبلیغاتی ج