( تعداد نمایش : 2218 )

تابع ()printf – آموزش زبان سی قسمت هفتم

تابع ()printf

این تابع برای انتقال اطلاعات از کامپیوتر به صفحه نمایش مورد استفاده قرار
می گیرد و بصورت زیر استفاده می شود : ;
( عبارت دیگر ” / عبارت ” ۱) printf) ”
عبارت ” ۱ شامل تعدادی کاراکترهای کنترلی ، کاراکترهای قالب جهت تعیین شکل
خروجی و رشته های دیگری است که باید به خروجی منتقل شوند . ” عبارت دیگر ” شامل
اطلاعاتی هستند که با فرمت مشخص شده در ” عبارت ” ۱، باید به خروجی منتقل شوند.
کاراکترهایی که برای تعیین فرمت خروجی مورد استفاده قرار می گیرند با کاراکتر %
شروع می شوند ( جدول ۱ ) .


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


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


جدول (۱) . کاراکترهای فرمت در تابع ()printf

کاراکترهای کنترلی که در تابع ()printf بکار میروند در جدول (۲) آمده است .
بعضی از کاراکترهای کنترلی برای انتقال خروجی به یک محل معین از صفحه نمایش
مورد استفاده قرار می گیرند .


| کاراکتر عملی که انجام می شود |


\f | \ موجب انتقال کنترل به صفحه جدید می شود | |
\n | \ موجب انتقال کنترل به خط جدید می شود | |
\t | \ انتقال به ۸ محل بعدی صفحه نمایش | |
\” | \ چاپ کوتیشن (“) | |
\’ | \ چاپ کوتیشن (‘) | |
\۰ NULL | \ رشته تهی | | back slash | \\ |
|
\V | \ انتقال کنترل به ۸ سطر بعدی | |
\N | \ ثابت های مبنای ۸( N( عدد مبنای ۸ است ) | |
\xN | \ ثابت های مبنای ۱۶( N( عدد مبنای ۱۶ است ) |


جدول (۲) . کاراکترهای کنترلی

چند دستور متوالی که شامل تابع ()print باشند ، خروجی خود را بر روی یک سطر
منتقل یم کنند . مگر این که با پارامتر کنترلی \n کنترل را به سطر بعدی منتقل
کنیم .
مثال ۱:

                                                                     main)(

        {

          printf(" i like %c "/'c' );

          printf("%s"/"very much." );

        }

خروجی حاصل از اجرای برنامه فوق بصورت ذیل خواهد بود : i like c very much.

با استفاده از \n می توانیم خروجی را در چند سطر داشته باشیم . main)(
{
printf(“this is second program.\n” );
printf(“output is in two line.” );
}

خروجی حاصل از اجرای برنامه فوق بصورت ذیل است : this is second program.
output is in two line.

مثال ۲: main)(
{
int num ;
printf(“the address of num is:” );
printf(” %p”/ &num );
}

در مثال فوق عبارت &num آدرس متغیر num را مشخص می کند که برای نوشتن آن از
کاراکتر فرمت %p استفاده شده است . نمونه ای از خروجی مثال ۲ بصورت زیر است . the address of num is : 6A30:OFE4

اگر در تابع ()printf چند کاراکتر فرمت داشته باشیم ، هر کاراکتر با یک عنصر
داده که باید به خروجی برود تطبیق داده می شود : main)(
{
int a=10 ;
float b=20 ;
printf(” a is:%d/b is :%f”/a/b);
}

خروجی حاصل از اجرای برنامه فوق بصورت ذیل است : a is:10/b is:20:000000

مثال ۳: main)(
{
unsigned int num ;
num=100 ;
printf(“the value of num is:%u”/num);
}

همانطوری که در مثال ۳ مشاهده می شود ، برای چاپ عدد num که بصورت عدد صحیح
بدون علامت تعریف شد ، از %u استفاده شده است .
خروجی حاصل از اجرای برنامه مثال ۳ به صورت ذیل است : the value of num is:100

مثال ۴: main)(
{
double d ;
d=le+007 ;
printf(“the value of d is:%e\n”/d);
printf(“the value of d is:%E\n”/d);
printf(“the value of d is:%g\n”/d);
}

خروجی حاصل از اجرای برنامه مثال ۴ بصورت ذیل خواهد بود : the value of d is:1.00000e+07
the value of d is:1.00000E+07
the value of d is:1e+07

همانطور که مشاهده می شود برای چاپ اعدادی که بصورت نماد علمی باشند میتوان
از کاراکترهای فرمت % e، % E،و % gو استفاده کرد .

مثال ۵: main)(
{
float f=12.50 ;
int t=10 ;
printf(“\n f is:%f”/f );
printf(” tenper is:%%%d”/t );
}

خروجی حاصل از اجرای برنامه فوق بصورت زیر است : f is:12.500000/tenper is:%10

در مثال ۵ برای چاپ علامت % از کاراکتر %% و برای چاپ متغیر f از نوع float
می باشد از %f استفاده شده است .
کاراکتر فرمت %n از سایر کاراکترهای فرمت متفاوت است . این کاراکتر بجای
انتقال مقادیری به خروجی ، موجب می شود تا تعداد کارکترهایی که تا قبل از این
کاراکتر به خروجی منتقل شده اند ، شمارش شده و در پارامتر متناظر با آن قرار
بگیرد .

مثال ۶: main)(
{
printf(“\neach\tword\tis\n” );
printf(“tabbed\tover\tonce” );
}

خروجی از اجرای برنامه فوق بصورت زیر خواهد بود : each word is
tabbed over once

کاراکتر کنترلی \b موجب انتقال مکان نما به اندازه یک کاراکتر به عقب میشود
( بسمت چپ ). کاراکترهای کنترلی \ “و \و برای چاپ کوتیشن درخروجی مورد استفاده
قرار می گیرند .

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

مثال ۷: main)(
{
printf(“\n%8.1f %8.1f %8.1f\n”
/3.0/12.5/523.3 );
printf(“\n%8.1f %8.1f %8.1f\n”
/300.0/1200.5/5300.3 );
}

خروجی حاصل از اجرای برنامه فوق بصورت زیر است : ۳٫۰ ۱۲٫۵ ۵۲۳٫۳
۳۰۰٫۰ ۱۲۰۰٫۵ ۵۳۰۰٫۳

همانطورکه مشاهده می گردد طول میدان برابر با ۸ و تعداد ارقام اعشار، برابر
با یک که در منتهاالیه سمت راست میدان قرار گرفته ، منظور شده است . برای توضیح
بیشتر ، عدد ۵۳۰۰/۳ را در حافظه نشان می دهیم :
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ | | | ۵ | ۳ | ۰ | ۰ | . | ۳ |

ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ
اگر فرمت w.d که طول میدان را مشخص می کند در مورد رشته ها استفاده گردد ، w
حداقل طول میدان و d حداکثر کاراکترهای قابل چاپ را مشخص می کند .
اگر w.d در مورد اعداد صحیح بکار برده شود ، w مشخص کننده حداقل طول میدان
و d تعیین کننده حداکثر طول میدان است .

مثال ۸: main)(
{
printf(“%7.4f\n”/123.1234567 );
printf(“%3.8d\n”/1000 );
printf(“%10.16a\n”/”this is a” );
printf(” simple test” );
}

خروجی حاصل از اجرای برنامه فوق بصورت زیر است : ۱۲۳٫۱۲۳۵
۰۰۰۰۱۰۰۰
this is a simple

در خروجی اول ، تعداد ارقام اعشاری ۴ در نظر گرفته شده که بقیه ارقام حذف
شده اند و ضمنا” عدد حاصل گرد شده است .
در خروجی دوم که : میدان ۳/۸ است عدد صحیح ۱۰۰۰ چاپ شده است .
در خروجی سوم از رشته this is a simple به اندازه ۱۶ کاراکتر چاپ شده است .
در حالت معمولی ، خروجی حاصل در سمت راست میدان قرار می گیرد که می توان با
قرار دادن علامت منها ( – ) بلافاصله پس از علامت % ، اطلاعات را در سمت چپ میدان

دیدگاه خود را بیان کنید.

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