تابع ()printf

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

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

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

جدول (1) . كاراكترهاي فرمت در تابع ()printf

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

| كاراكتر عملي كه انجام مي شود |

\f | \ موجب انتقال كنترل به صفحه جديد مي شود | |
\n | \ موجب انتقال كنترل به خط جديد مي شود | |
\t | \ انتقال به 8 محل بعدي صفحه نمايش | |
\" | \ چاپ كوتيشن (") | |
\' | \ چاپ كوتيشن (') | |
\0 NULL | \ رشته تهي | | back slash | \\ |
|
\V | \ انتقال كنترل به 8 سطر بعدي | |
\N | \ ثابت هاي مبناي 8( N( عدد مبناي 8 است ) | |
\xN | \ ثابت هاي مبناي 16( N( عدد مبناي 16 است ) |

جدول (2) . كاراكترهاي كنترلي

چند دستور متوالي كه شامل تابع ()print باشند ، خروجي خود را بر روي يك سطر
منتقل يم كنند . مگر اين كه با پارامتر كنترلي \n كنترل را به سطر بعدي منتقل
كنيم .
مثال 1:
                                                                     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.


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

در مثال فوق عبارت &num آدرس متغير num را مشخص مي كند كه براي نوشتن آن از
كاراكتر فرمت %p استفاده شده است . نمونه اي از خروجي مثال 2 بصورت زير است . 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


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

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


مثال 4: 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);
}

خروجي حاصل از اجراي برنامه مثال 4 بصورت ذيل خواهد بود : 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و استفاده كرد .

مثال 5: 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

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

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

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

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

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

مثال 7: 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 );
}

خروجي حاصل از اجراي برنامه فوق بصورت زير است : 3.0 12.5 523.3
300.0 1200.5 5300.3

همانطوركه مشاهده مي گردد طول ميدان برابر با 8 و تعداد ارقام اعشار، برابر
با يك كه در منتهااليه سمت راست ميدان قرار گرفته ، منظور شده است . براي توضيح
بيشتر ، عدد 5300/3 را در حافظه نشان مي دهيم : 
| | | 5 | 3 | 0 | 0 | . | 3 |

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

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

خروجي حاصل از اجراي برنامه فوق بصورت زير است : 123.1235
00001000
this is a simple

در خروجي اول ، تعداد ارقام اعشاري 4 در نظر گرفته شده كه بقيه ارقام حذف
شده اند و ضمنا" عدد حاصل گرد شده است .
در خروجي دوم كه : ميدان 3/8 است عدد صحيح 1000 چاپ شده است .
در خروجي سوم از رشته this is a simple به اندازه 16 كاراكتر چاپ شده است .
در حالت معمولي ، خروجي حاصل در سمت راست ميدان قرار مي گيرد كه مي توان با
قرار دادن علامت منها ( - ) بلافاصله پس از علامت % ، اطلاعات را در سمت چپ ميدان