دریافت ورودی از کاربر در زبان C

قبل تر آموختیم که می توان با تابع printf() خروجی یک برنامه را نمایش داد.

برای دریافت داده از کاربر از تابع scanf() استفاده می کنیم.


// یک متغیر از نوع عدد را تعریف کردیم تا مقداری را که کاربر وارد کرده در آن ذخیره شود
int myNum;

// عدد را از کاربر درخواست کردیم
printf("Type a number and press enter: \n"); 

// عددی که کاربر وارد کرده است را دریافت و ذخیره کردیم
scanf("%d", &myNum);

// عددی که کاربر وارد کرده بود را نمایش دادیم
printf("Your number is: %d", myNum);

نکته: برای استفاده از تابع scanf() باید از دو آرگومان به شکل مثال بالا استفاده کنید.
ابتدا از یک تعیین کننده قالب ( %d ) و علامت ( & ) به همراه متغیری که قرار است داده در آن ذخیره شود را می نویسیم.

 

دریافت ورودی های مختلف از کاربر بطور همزمان در زبان C

همچنین با استفاده از تابع scanf() می توان، چندین ورودی متفاوت از کاربر دریافت کرد.

برای مثال در کد زیر یک عدد صحیح و یک کاراکتر از کاربر دریافت کرده ایم.


// متغیرهای از نوع int و char ایجاد کردیم
int myNum;
char myChar;

// از کاربر عدد و کاراکتر درخواست کردیم
printf("Type a number AND a character and press enter: \n");

// عدد و کاراکتر را از کاربر دریافت و ذخیره کردیم
scanf("%d %c", &myNum, &myChar);

// عدد وارد شده را نمایش دادیم
printf("Your number is: %d\n", myNum);

// کاراکتر وارد شده را نمایش دادیم
printf("Your character is: %c\n", myChar);

دریافت ورودی از نوع رشته از کاربر در زبان C

همچنین می توان داده های نوع رشته ای را از کاربر دریافت کرد.

// یک متغیر از نوع رشته ایجاد کردیم
char firstName[30];

// از کاربر درخواست وارد کردن داده متنی کردیم (نام)
printf("Enter your first name and press enter: \n");

// متن وارد شده را دریافت و ذخیره کردیم
scanf("%s", firstName);

// متن را نمایش دادیم
printf("Hello %s", firstName);

 

نکته: برای دریافت داده های نوع رشته ای از کاربر توسط تابع scanf()، نیازی به استفاده از علامت ( & ) نبوده ولی در عوض باید اندازه داده مورد نظر، جهت ذخیره، مانند مثال بالا بنویسید.

 البته که تابع scanf() دارای محدودیت هایی است. (فاصله، استفاده از تب (جهت فاصله) و غیره . . .) بعنوان پایان دهنده یک رشته تلقی شده و در خروجی تنها کلمات پیوسته قبل اولین خط فاصله را نمایش می دهد.

char fullName[30];

printf("Type your full name: \n");
scanf("%s", &fullName);

printf("Hello %s", fullName);

// Type your full name: John Doe
// Hello John

از مثال بالا انتظار دارید که عبارت "John Doe" را چاپ کند، اما فقط "John" را چاپ می کند.

به همین دلیل، هنگام کار با رشته ها از تابع fgets() استفاده می کنیم.

برای این کار باید از آرگومان های زیر استفاده کرد.

sizeof(نام متغیر) , stdin

// یک متیغر از نوع رشته ساختیم
char fullName[30];

// از کاربر درخواست وارد کرد متن کردیم (نام کامل)
printf("Type your full name and press enter: \n");

// متن را دریافت کردیم
fgets(fullName, sizeof(fullName), stdin);

// متن را نمایش دادیم
printf("Hello %s", fullName);

 

نکته: برای دریافت یک کلمه هنگام استفاده از داده های رشته ای از تابع scanf()، و برای دریافت چندین کلمه از تابع fgets() استفاده می کنیم.

 

توسعه دهندگان
امین آهن کوبی