ورودی کاربر در C
دریافت ورودی از کاربر با تابع scanf برای اعداد، کاراکترها و رشتهها
ورودی کاربر با scanf
قبلاً یاد گرفتید با printf خروجی چاپ کنید. حالا وقت آن است که از کاربر ورودی بگیریم! برای این کار از تابع scanf() استفاده میشود:
scanf("%d", &myNum);
علامت & مهم!
دقت کنید قبل از نام متغیر علامت & (عملگر آدرس) آمده است. این علامت به scanf میگوید آدرس متغیر را برای ذخیره مقدار استفاده کن. فراموش کردن & یکی از رایجترین خطاهاست!
دریافت عدد صحیح
int myNum;
printf("یک عدد وارد کنید: ");
scanf("%d", &myNum);
printf("شما %d وارد کردید", myNum);
دریافت عدد اعشاری
float myFloat;
scanf("%f", &myFloat);
دریافت کاراکتر
char myChar;
scanf("%c", &myChar);
دریافت چند ورودی همزمان
int a, b;
scanf("%d %d", &a, &b); // کاربر: 5 10
دریافت رشته (متن)
برای رشته، بدون & مینویسیم چون نام آرایه خودش آدرس است:
char name[50];
scanf("%s", name); // فقط یک کلمه (تا فاصله)
⚠️ %s فقط یک کلمه میخواند و با فاصله متوقف میشود. برای خواندن یک خط کامل:
fgets(name, sizeof(name), stdin);
مشکل بافر بعد از scanf
اگر بعد از خواندن عدد، بخواهید کاراکتر بخوانید، کاراکتر newline باقیمانده در بافر خوانده میشود! راهحل:
scanf("%d", &num);
scanf(" %c", &ch); // فاصله قبل از %c مشکل را حل میکند
نکات مهم
- همیشه مشخصه فرمت را با نوع متغیر هماهنگ کنید
- برای رشتهها از
fgetsامنتر است چون محدودیت اندازه دارد - scanf مقدار تعداد آیتمهای خواندهشده را برمیگرداند — میتوانید بررسی کنید ورودی معتبر بوده یا نه
این مبحث بخشی از دوره آموزش کامل زبان C است.