خانه / دوره آموزش مقدماتی C و ++C / قسمت هشتم آموزش C – تابع scanf

قسمت هشتم آموزش C – تابع scanf

اگر با ما همراه بوده باشید در جلسه ی قبل توانستیم با تابع printf اطلاعات را در خروجی درج کنیم و حال میخواهیم در این جلسه اطلاعات و داده ها را از ورودی دریافت کنیم .

همچنین برای راحتی دوستانی که این آموزش ها رو دنبال میکنند کتابخانه های مورد نیاز برای اجرای کد ها و مثال به اول هر قطعه کد اضافه شد تا به راحتی با کپی کردن آنها در کامپایلر مورد نظر آنها را اجرا کنید . همچنین از تابع getch برای توقف صفحه ای که خروجی را در آن مشاهده میکنید قرار داده شده که تا لحظه ای که کلیدی فشار داده شود صبر میکند .

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

scanf(آدرس متغیرها , "کاراکترهای فرمت");

کاراکترهای فرمت ، نوع اطلاعاتی که باید خوانده شوند را مشخص می کند. و آدرس متغیرها، مشخص کننده محل هایی از حافظه هستند که اطلاعات ورودی باید درآن محلها قرار گیرند. همانطور که قبلا دیده ایم آدرس متغیرها را با عملگر & مشخص میکنیم . در تابع scanf همانند تابع printf از تعدادی کاراکترهای فرمت استفاده می شود .

کاراکترفرمت | نوع اطلاعات که باید به خروجی منتقل شود

%C :  یک کاراکتر
%d : اعداد صحیح دهدهی مثبت و منفی
%i  : اعداد صحیح دهدهی مثبت و منفی
%e : نمایش علمی عدد همراه با حرف e
%E : نمایش علمی عدد همراه با حرف E
%f : عدد اعشاری ممیز شناور
%g : اعداد اعشاری ممیز شناور
%G : اعداد اعشاری ممیز شناور
%O : اعداد مبنای ۸ مثبت
%S : رشته ای از کاراکترها ( عبارت رشته ای )
%U : اعداد صحیح بدون علامت ( مثبت )
%x : اعداد مبنای ۱۶ مثبت با حروف کوچک
%X : اعداد مبنای ۱۶ مثبت با حروف بزرگ
%p : اشاره گر
%n : موجب میشود تا تعداد کاراکترهایی که تا قبل ازاین کاراکتر به خروجی منتقل شده اند شمارش شده و در پارامتر متناظر با آن قرار گیرد .
%% : علامت %

مثال ۱ :

</p>
<p>#include &lt;stdio.h&gt;<br />
#include &lt;conio.h&gt;<br />
void main()<br />
{<br />
char ch ;<br />
printf(&quot;\n enter a character :&quot;);<br />
scanf(&quot;%c&quot;, &amp;ch );<br />
printf(&quot;\n ch=%c&quot;, ch );<br />
getch();<br />
}</p>
<p>

اجرای فرمان فوق ، ضمن صدور یک پیام ، کاراکتری را از ورودی خوانده در متغیر ch قرار می دهد . نمونه ای از خروجی را در زیر مشاهده می کنیم :

enter a character : s
ch=s

مثال ۲ :

</p>
<p>#include &lt;stdio.h&gt;<br />
#include &lt;conio.h&gt;<br />
void main()<br />
{<br />
int year ;<br />
printf(&quot;enter your age in year:&quot;);<br />
scanf(&quot;%d&quot; , &amp;year );<br />
printf(&quot;\n your age is&quot;);<br />
printf(&quot; %d day.&quot; , year*365);<br />
getch();<br />
}</p>
<p>

نمونه ای از خروجی را در زیر مشاهده می کنیم :

enter your age in year:19
.your age 6935 day

این برنامه ، سن شما را از ورودی دریافت کرده و آن را به روز تبدیل میکند وسپس به خروجی می برد . لازم به ذکر است که در مثال ۲ تابع ()scanf بر روی خطی عمل می کند که تابع ()printf اولی عمل کرده است . تابع ()printf دومی به علت وجود n\ ، بر روی خط بعدی از صفحه نمایش عمل خواهد کرد . استفاده از سایر کاراکترهای قالب در تابع ()scanf همانند تابع ()printf است که ذکر مثال درمورد آنها ضروری به نظر نمی رسد .

قالب دیگری که باید در مورد آن توضیح داده شود n% است که مشابه آن را در تابع ()printf داشته ایم . n% در تابع ()scanf تعداد کاراکترهای خوانده شده توسط این تابع تا n% را به متغیری که آدرس آن متناظر با n% ذکر شده است منتقل میکند. برای خواندن چند متغیر از ورودی توسط تابع ()scanf ، اسامی متغیرها را که به همراه & ( عملگر آدرس ) ذکر می شوند با کاما از یکدیگر جدا کرده و در حین ورود اطلاعات می توانیم آنها را با فاصله ( blank ) ، کلید enter و یا tab جدا کنیم .

به عنوان تمرین برنامه ای بنویسید که ۳ عدد را از ورودی دریافت کرده و میانگین آنها را محاسبه کرده و در خروجی چاپ کند .

درباره ی آریـان پــور

سلام . آریــان پور هستم . از نویسندگان میکروپـدیا .. علاقه مــند به برنامه نویسی و طراحی وب و شبکه ! دیدگاه ها و نظرات شما دوستان بررسی میشه و باعث دلگرمـی برای نوشتن مطالب بهتر و به روزتر . در تماس باشید با : aryanpour [at] micropedia [dot] ir با مـا همراه باشید ..

همچنین ببینید

قسمت بیست و چهارم آموزش C – عملگرهای اشاره گر

این جلسه بسیار ساده و کوتاه خواهد بود. دو عملگر در مورد اشاره گرها مورد …

۹ دیدگاه ها

  1. سلام خسته نباشید
    تفاوت scanf و printf چیه؟

  2. من هر کاری می کنم scanf بیشتر از یک ورودی نمی خونه!😖
    چیکار کنم؟

  3. آقا دمتون گرم بخاطر این سایت و دم آقای آریان پور هم گرم بخاطر این مطالبی که انقدر خوب و حرفه ای و در عین حال به زبان ساده توضیح میدن
    دلم نیومد ازتون تشکر نکنم چون واقعا بدردم خورد 😉

  4. سلام ببخشید من مجموعه دستورات برنامه نویسی سی پلاس پلاس یا سی شارپ رو میخوام ک اجراشونم داشته باشه شما نمیتونین راهماییم کنین سایتی ک داشته باشه یا خودتون ندارید خیلی ممنون میشم اگ جوابمو بدید

  5. عالی بود خیلی متشکر-این طور مطالبی کمتر با این شکل بیان خوب پیدا میشه

  1. بازتاب ها: مکث در اجرای دستورات C | هاست ارزان

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پاسخ عبارت زیر را وارد کنید: *