ورودی کاربر در 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 مشکل را حل می‌کند

نکات مهم

این مبحث بخشی از دوره آموزش کامل زبان C است.

ابزارهای مرتبط