زنگ

کسانی هستند که قبل از شما این خبر را می خوانند.
برای دریافت مقالات جدید مشترک شوید.
پست الکترونیک
نام
نام خانوادگی
چگونه می خواهید زنگ را بخوانید؟
بدون هرزنامه

یک رشته، مقدار متغیر یا عبارت را چاپ می کند.
نحو:

چاپ (ارگ رشته ای)

تابع print() آرگومان arg را چاپ می کند که می تواند یک متغیر یا یک عبارت باشد.

vsprintf()

یک رشته قالب‌بندی شده را برمی‌گرداند (PHP 4 >= 4.1.0، PHP 5)

شرح:

رشته vsprintf (فرمت رشته، آرگ آرایه)

این تابع شبیه به sprintf() است، اما به جای تعداد متغیر آرگومان، یک آرایه می گیرد.

یک یا چند مقدار را چاپ می کند.
نحو:

اکو (رشته arg1، رشته ...)

تابع echo() مقادیر پارامترهای فهرست شده را نمایش می دهد.
echo() در واقع یک ساختار زبان است، بنابراین حتی اگر چندین آرگومان استفاده شود، نیازی به پرانتز ندارد.
echo "خطوط های موجود در کد ذخیره شده و در خروجی استفاده می شوند."
"برای جلوگیری از این استفاده."
"اپراتور الحاق"؛

خروجی رشته فرمت شده.
نحو:

Int printf (فرمت رشته [، آرگ های مخلوط، ...]);

همان کاری را که sprintf() انجام می دهد، انجام می دهد، فقط رشته به دست آمده برگردانده نمی شود، بلکه به مرورگر کاربر ارسال می شود.

قالب بندی رشته را با جایگزینی متغیر انجام می دهد.
نحو:

Sprintf ($format [,args, ...])

این تابع رشته‌ای را برمی‌گرداند که از یک رشته قالب حاوی چند کاراکتر خاص ساخته شده است که بعداً با مقادیر متغیرهای مربوطه در لیست آرگومان جایگزین می‌شوند.
رشته قالب $format می تواند شامل دستورات قالب بندی باشد که قبل از آن یک کاراکتر % وجود دارد.
همه کاراکترهای دیگر همانطور که هست در رشته خروجی کپی می شوند. هر مشخص کننده قالب (یعنی کاراکتر % و دستورات زیر) با یک و تنها یک پارامتر مشخص شده پس از پارامتر $format مطابقت دارد. اگر نیاز دارید % را در متن به عنوان نماد معمولی قرار دهید، باید آن را دو برابر کنید:

Echo sprintf("درصد %d%% بود"،$percentage);

هر فرمت مشخص کننده حداکثر دارای پنج عنصر است (به ترتیبی که بعد از کاراکتر %) ظاهر می شود:

یک تعیین کننده اندازه فیلد اختیاری که مشخص می کند چند کاراکتر برای مقدار خروجی تخصیص داده می شود.
به عنوان کاراکتر مکان نگهدار (اگر مقدار از اندازه فیلد برای نمایش آن کوچکتر باشد)
از یک فاصله یا 0 می توان استفاده کرد، پیش فرض یک فاصله است. شما می توانید هر کاراکتر پرکننده دیگری را در صورتی که آن را در رشته قالب مشخص کنید، قبل از یک آپستروف مشخص کنید.
یک تعیین کننده تراز اختیاری که مشخص می کند نتیجه در سمت راست یا چپ فیلد تراز شود. پیش‌فرض تراز سمت راست است، اما می‌توانید با مشخص کردن علامت - (منهای) تراز چپ را مشخص کنید.

یک عدد اختیاری که اندازه فیلد را برای نمایش مقدار مشخص می کند. اگر نتیجه در فیلد نباشد، فراتر از لبه های این فیلد "امتداد می یابد" اما کوتاه نمی شود.
یک عدد اختیاری، قبل از یک نقطه "."، که مشخص می کند چند رقم اعشار در رشته حاصل خواهد بود.
این مشخص کننده تنها زمانی در نظر گرفته می شود که یک عدد ممیز شناور در حال خروجی باشد، در غیر این صورت نادیده گرفته می شود.
در نهایت، مشخص کننده مورد نیاز (توجه - تنها مورد نیاز!) نوع مقداری که در رشته خروجی قرار می گیرد:

b - آرگومان بعدی از لیست به صورت یک عدد صحیح باینری خروجی می شود
ج - نماد با کد مشخص شده در آرگومان نمایش داده می شود
د - عدد صحیح
و - عدد ممیز شناور
o - عدد صحیح هشتگانه
s - رشته کاراکتر
x - عدد صحیح هگزا دسیمال با حروف کوچک a-z
X یک عدد صحیح هگزادسیمال با حروف بزرگ A-Z است

در اینجا نحوه تعیین دقت اعداد ممیز شناور آمده است:

$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money خروجی "123.1" خواهد داشت...
$formatted = sprintf("%01.2f"، $money);
// echo $formatted خروجی "123.10" خواهد داشت!

در اینجا مثالی از خروجی یک عدد صحیح قبل از تعداد صفرهای لازم آورده شده است:

$isodate=sprintf("%04d-%02d-%02d",$year,$month,$day);

رشته را با توجه به فرمت تفسیر می کند و مقادیر را در متغیرها وارد می کند.

نحو:

sscanf مخلوط (رشته رشته، قالب رشته [، رشته var1 ...])

تابع ()sscanf مخالف تابع printf() است.

این رشته رشته str را بر اساس فرمت، مشابه مشخصات printf() تفسیر می کند.

وقتی فقط دو آرگومان مشخص می شود، مقادیر به دست آمده در یک آرایه برگردانده می شوند.

// دریافت شماره سریال$serial = sscanf("SN/235-0001", "SN/%3d-%4d");
echo $serial*10000+$serial; // خروجی: 2350001
// و تاریخ تولید$date = "01 ژانویه 2000";
list($month، $day، $year) = sscanf($date، "%s %d %d");
echo "Date: $year-".substr($month,0,3)."-$dayn";
// خروجی ها: 2000-Jan-01

هنگام تعیین پارامترهای اختیاری اضافی (آنها باید با مرجع ارسال شوند)

تابع شماره آنها را برمی گرداند. متغیرهایی که مقادیر را دریافت نمی کنند در مقدار بازگشتی در نظر گرفته نمی شوند.

// ایجاد یک رکورد XML از رشته $auth = "765tLewis Carroll";
$n = اسکن ($auth,"%dt%s %s"، &$id، &$first، &$last);
پژواک"
اول $
آخرین $
n";

fprintf()

شرح:

Int fprintf (دسته منبع، قالب رشته [، آرگ های ترکیبی])

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

fprintf(): پر کردن با صفر


برگشت؛

fprintf($fp، "%04d-%02d-%02d"، $year، $month، $day);
// تاریخ فرمت شده را در فایل date.txt می نویسد
?>

fprintf(): قالب بندی مقادیر پولی

if (!($fp = fopen("currency.txt"، "w")))
برگشت؛

$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money خروجی "123.1" خواهد داشت.
$len = fprintf($fp، "%01.2f"، $money);
// رشته "123.10" در فایل currency.txt نوشته می شود

echo "$len bytes نوشته شده در فایل currency.txt";
?>

vfprintf()

یک رشته فرمت شده را در یک جریان می نویسد (PHP 5)

شرح:

Int vfprintf (دسته منبع، قالب رشته، آرگ آرایه)

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

مانند fprintf() عمل می کند، اما به جای تعداد متغیر آرگومان، آرایه ای از آرگومان ها را می گیرد.

طول رشته خروجی را برمی گرداند.

همچنین ببینید: printf()، sprintf()، sscanf()، fscanf()، vsprintf()، و number_format().
مثال ها

vfprintf(): اعداد صحیح بدون لایه

if (!($fp = fopen("date.txt"، "w")))
برگشت؛

vfprintf($fp، "%04d-%02d-%02d"، آرایه ($year، $month، $day));
// تاریخ ISO فرمت شده را به date.txt خواهد نوشت
?>

vprintf()

یک رشته فرمت شده را خروجی می دهد (PHP 4 >= 4.1.0، PHP 5)

شرح:

Int vprintf (فرمت رشته، آرگ آرایه)

مقادیر آرایه args را که بر اساس آرگومان فرمت شرح داده شده در مستندات تابع sprintf() قالب بندی شده است، خروجی می دهد.

این تابع مشابه printf() است، اما به جای تعداد متغیر آرگومان، یک آرایه می گیرد.

طول رشته خروجی را برمی گرداند

number_format()

یک عدد را با جداسازی گروهی قالب بندی می کند (PHP 3، PHP 4، PHP 5)

شرح:

قالب_رشته (شماره شناور [، اعشار درونی])

قالب_رشته (شماره شناور، اعداد اعشاری درونی، نقطه نزولی رشته، رشته هزاران_سپت)

number_format() عدد فرمت شده را برمی گرداند. تابع یک، دو یا چهار آرگومان می گیرد (نه سه):

اگر فقط یک آرگومان ارسال شود، شماره بدون بخش کسری، اما با کاما ("") بین گروه های اعداد 3 قالب بندی می شود.

اگر دو آرگومان ارسال شود، اعداد با اعشار بعد از نقطه (".") و کاما ("") بین گروه های اعداد 3 قالب بندی می شوند.

اگر هر چهار آرگومان ارسال شود، اعداد بعد از نقطه با اعشار و با جداکننده بین گروه‌های اعداد 3، با استفاده از dec_point به عنوان نقطه اعشار و هزاران_sep به عنوان جداکننده گروه، قالب‌بندی می‌شوند.

فقط اولین کاراکتر از خط هزاران_sep استفاده می شود. برای مثال، اگر برای فرمت عدد 1000، foo را به عنوان هزاران_سپت ارسال کنید، () number_format 1f000 را برمی‌گرداند.

مثالی از استفاده از number_format()

در فرانسه، استفاده از 2 رقم اعشار ("") و یک فاصله ("") به عنوان جداکننده گروه رایج است. این قالب بندی با استفاده از کد زیر به دست می آید:

$ number = 1234.56;

// قالب انگلیسی (پیش‌فرض)
$english_format_number = number_format($number);
// 1,234

// فرمت فرانسوی
$nombre_format_francais = number_format($number, 2, ",", " ");
// 1 234,56

$number = 1234.5678;

// فرمت انگلیسی بدون جداکننده گروه
$english_format_number = number_format($number, 2, ".", "");
// 1234.57

برای خروجی فرمت شده در PHPاز دو ویژگی عالی استفاده شده است: printf()و sprintf(). آنها دارای قابلیت های بسیار زیادی هستند که در این مقاله به آنها خواهیم پرداخت.

من فوراً می گویم که تفاوت بین printf()و sprintf()فقط این که اولی رشته را مستقیماً به جریان خروجی (مثلاً به مرورگر) خروجی می دهد و دومی آن را برمی گرداند.

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

چندین مشخص کننده وجود دارد که در یک گروه (یکی رایج) ترکیب می شوند % ، ترتیب آن به شرح زیر است:

  1. مشخص کننده بالشتک. به شما امکان می دهد رشته ای را با یک کاراکتر خاص به اندازه ای مشخص پر کنید. به طور پیش فرض، این کاراکتر یک فاصله است.
  2. تعیین کننده تراز. این مشخص کننده به شما امکان می دهد تراز خط را به سمت راست (به طور پیش فرض) یا سمت چپ (در صورت تعیین ") تنظیم کنید. - ").
  3. تعیین کننده حداقل عرض. اگر نتیجه طول رشته کوتاه تری داشته باشد، با کاراکترهایی از مشخص کننده padding تا عرض مشخص شده پر می شود.
  4. مشخص کننده دقیق. به شما امکان می دهد تعیین کنید چند رقم اعشار برای یک عدد ممیز شناور باقی بماند.
  5. مشخص کننده نوع. این مشخص کننده نوع داده خروجی را مشخص می کند. 8 مورد از آنها وجود دارد، اما در عمل از موارد زیر استفاده می شود:
    • د- یک عدد صحیح به صورت اعشاری
    • f- یک عدد ممیز شناور به صورت اعشاری.
    • س- خط

بیایید به کلاسیک نگاه کنیم مثال برای خروجی یک تاریخ فرمت شده:

سال $ = 2012;
$ماه = 9;
$ روز = 28;
printf("تاریخ نوشتن: %02d.%02d.%04d", $day, $month, $year);
?>

حدس زدن اینکه نتیجه خط زیر خواهد بود دشوار نیست: " تاریخ نگارش مقاله: 1391/09/28". لطفاً توجه داشته باشید که چند گروه از مشخص کننده ها، به همان تعداد پارامترها علاوه بر خود قالب منتقل می شوند. خط " تاریخ نگارش مقاله:" یک دستورالعمل است و بدون تغییر باقی می ماند. حالا اجازه دهید به عنوان مثال به گروه دوم مشخص کننده ها که مسئول ماه هستند نگاه کنیم. گروه های دیگر کاملاً یکسان هستند.

  • %
  • 0 - کاراکتری که با آن پارامتر مشخص شده به عرض مورد نیاز پر می شود.
  • 2 - حداقل عرض بر این اساس اگر طول خط کمتر باشد پر می شود 0 .
  • د- به عنوان یک عدد صحیح خروجی خواهد شد. اگر قرار دهید برای مثال، ب(مشخص کننده نوع دیگری)، سپس همان عدد نمایش داده می شود، اما به صورت باینری.

من یکی دیگر از محبوب ها را به شما می دهم مثال استفاده از تابع printf (و sprintf())مرتبط با گرد کردن اعداد:

$x = 12.596123;
printf("%06.2f"، $x); // "012.60" نمایش داده خواهد شد
?>

بیایید به اولین آرگومان تابع نگاه کنیم printf():

  • % - ابتدای گروه مشخص کننده.
  • 0 - کاراکتر برای پر کردن به طول مورد نیاز.
  • 6 - طول مورد نیاز (البته نکته نیز در این طول گنجانده شده است).
  • .2 - دقت تا 2ارقام اعشاری
  • f- نوع عدد ممیز شناور در واقع، گرد کردن فقط برای این نوع منطقی است.

همانطور که می بینید، توابع printf() و sprintf().حل مسائل به ظاهر بسیار پیچیده را آسان می کند. بنابراین، شما قطعا باید آنها را در زرادخانه خود داشته باشید.

(PHP 4، PHP 5، PHP 7)

اسپرینت اف - یک رشته قالب بندی شده را برمی گرداند

لیست پارامترها

یک رشته قالب از صفر یا چند دستور تشکیل شده است: کاراکترهای معمولی (به جز % ) که مستقیماً در رشته حاصل کپی می شوند و توصیفگرهای تحولکه هر کدام با یکی از پارامترها جایگزین می شود. این برای هر دو صدق می کند sprintf()، و به printf().

هر مشخص کننده تبدیل از یک علامت درصد تشکیل شده است ( % ، به دنبال آن یک یا چند عنصر اضافی (به ترتیبی که در اینجا فهرست شده اند):

  1. اختیاری توصیف کننده شخصیت، نشان می دهد که چگونه علامت (- یا +) روی عدد اعمال می شود. به طور پیش فرض، اگر عدد منفی باشد، فقط از علامت منفی استفاده می شود. این مشخص کننده باعث می شود که اعداد مثبت نیز علامت مثبت را نشان دهند و در PHP 4.3.0 اضافه شده است.
  2. اختیاری مشخص کننده padding، که مشخص می کند از کدام کاراکتر برای اضافه کردن نتیجه به طول مورد نیاز استفاده می شود. این می تواند یک فضا یا 0 . پیش فرض فضا است. یک کاراکتر جایگزین را می توان با استفاده از یک نقل قول مشخص کرد ( " ). نمونه های زیر را ببینید.
  3. اختیاری توصیفگر تراز، که تراز چپ یا راست را مشخص می کند. به طور پیش فرض در سمت راست تراز شده است، - برای تراز چپ استفاده می شود.
  4. شماره اختیاری تعیین کننده عرض، که حداقل تعداد کاراکترهایی را که نتیجه این تبدیل شامل می شود را مشخص می کند.
  5. اختیاری توصیفگر دقیق، به عنوان نقطه (".") مشخص می شود و به دنبال آن یک رشته اعشاری اختیاری که مشخص می کند چند رقم اعشار برای اعداد ممیز شناور نمایش داده می شود. هنگامی که با رشته ها استفاده می شود، این مشخص کننده به عنوان یک نقطه برش عمل می کند که حداکثر محدودیت کاراکتر را تعیین می کند. همچنین می توانید نماد مورد استفاده برای تکمیل عدد بین نقطه و عدد را مشخص کنید.
  6. مشخص کننده نوع، که نحوه برخورد با نوع داده آرگومان را مشخص می کند. انواع معتبر:

    • % - نماد درصد از استدلال استفاده نمی شود.
    • ب- آرگومان به عنوان یک عدد صحیح و خروجی به عنوان یک عدد باینری در نظر گرفته می شود.
    • ج- آرگومان به عنوان یک عدد صحیح و خروجی به عنوان یک کاراکتر با کد اسکی مربوطه در نظر گرفته می شود.
    • د- آرگومان به عنوان یک عدد صحیح و خروجی به عنوان یک عدد اعشاری امضا شده در نظر گرفته می شود.
    • ه- آرگومان در نماد علمی به عنوان یک عدد تفسیر می شود (مثلاً 1.2e+2). مشخص کننده دقت تعداد ارقام اعشار را از زمان PHP 5.2.1 نشان می دهد. در نسخه های قبلی، تعداد ارقام قابل توجه (یک علامت کمتر) را نشان می داد.
    • E- مشابه %e، اما از یک حرف بزرگ استفاده می کند (مثلاً 1.2E+2).
    • f- آرگومان به عنوان یک عدد ممیز شناور در نظر گرفته می شود و بسته به منطقه نیز خروجی می شود.
    • اف- آرگومان به عنوان یک عدد ممیز شناور در نظر گرفته می شود و همچنین خروجی است، اما بدون وابستگی به منطقه. از PHP 4.3.10 و PHP 5.0.3 در دسترس است.
    • g %eو % f.
    • جی- کوتاه ترین ورودی را از بین انتخاب می کند %Eو % f.
    • o- آرگومان به عنوان یک عدد صحیح و خروجی به عنوان یک عدد اکتال در نظر گرفته می شود.
    • س- آرگومان به عنوان یک رشته در نظر گرفته می شود.
    • تو- آرگومان به عنوان یک عدد صحیح و خروجی به عنوان یک عدد اعشاری بدون علامت در نظر گرفته می شود.
    • ایکس- آرگومان به عنوان یک عدد صحیح و خروجی به عنوان یک عدد هگزادسیمال (حروف کوچک) در نظر گرفته می شود.
    • ایکس- آرگومان به عنوان یک عدد صحیح و خروجی به عنوان یک عدد هگزادسیمال (در حروف بزرگ) در نظر گرفته می شود.

متغیرها به نوع مناسب برای مشخص کننده تبدیل می شوند:

نوع Handling
تایپ کنید مشخص کننده
رشته س
عدد صحیح د, تو, ج, o, ایکس, ایکس, ب
دو برابر g, جی, ه, E, f, اف

توجه

تلاش برای استفاده از ترکیبی از رشته‌ها و تعیین‌کننده‌های عرض با رمزگذاری‌هایی که به بیش از یک بایت در هر کاراکتر نیاز دارند، ممکن است نتایج غیرمنتظره‌ای ایجاد کند.

رشته فرمت از شماره گذاری و ترتیب مجدد پارامترها پشتیبانی می کند. مثلا:

مثال شماره 1 تغییر ترتیب پارامترها

$num = 5 ;
$location = "درخت" ;

فرمت $ = "%d میمون روی %s نشسته اند";

?>

این کد "5 میمون نشسته روی درخت" را خروجی می دهد. حال تصور کنید که رشته فرمت در یک فایل جداگانه قرار دارد که سپس به زبان دیگری ترجمه می شود و ما آن را به این صورت بازنویسی می کنیم:

مثال #2 تغییر ترتیب پارامترها

فرمت $ = "%d میمون روی %s نشسته است";
echo sprintf ($format، $num، $location)؛
?>

مشکلی وجود دارد: ترتیب مشخص‌کننده‌های تبدیل با ترتیب آرگومان‌ها مطابقت ندارد. ما نمی‌خواهیم کد را تغییر دهیم و باید مشخص کنیم که کدام آرگومان با کدام مشخص‌کننده تبدیل مطابقت دارد.

مثال #3 تغییر ترتیب پارامترها

فرمت $ = "%1$d میمون روی %2$s نشسته است";
echo sprintf ($format، $num، $location)؛
?>

شماره گذاری آرگومان کاربرد دیگری نیز دارد: به شما امکان می دهد آرگومان یکسان را چندین بار بدون ارسال پارامترهای اضافی به تابع چاپ کنید.

مثال #4 تغییر ترتیب پارامترها

فرمت $ = «%1$d میمون روی %2$s نشسته است.
خیلی خوب است که %2$s روی %1$d میمون بنشیند."
;
echo sprintf ($format، $num، $location)؛
?>

هنگام تغییر ترتیب پارامترها توصیف کننده موقعیت n$باید بلافاصله پس از علامت درصد ( % ) قبل از همه توصیفگرهای دیگر، همانطور که در مثال زیر نشان داده شده است.

مثال شماره 5 تعیین یک کاراکتر مکمل

echo sprintf ("%".9d\n" , 123);
echo sprintf ("%".09d\n" , 123);
?>

123 000000123

مثال شماره 6 با استفاده از مشخص کننده موقعیت و در ارتباط با سایر توصیفگرها

فرمت $ = "%1$04d میمون روی %2$s نشسته است";
echo sprintf ($format، $num، $location)؛
?>

نتیجه اجرای این مثال:

0005 میمون روی درخت نشسته اند

اظهار نظر:

تلاش برای استفاده از مشخص کننده موقعیت بزرگتر از PHP_INT_MAX، باعث می شود که عملکرد یک هشدار ایجاد کند sprintf() .

توجه

این جنوع مشخص کننده بالشتک و عرض را نادیده می گیرد

مقادیر برگرداندن

رشته ای را برمی گرداند که بر اساس قالب قالب بندی شده است.

مثال ها

مثال شماره 7 sprintf(): بالشتک با صفر

$n = 43951789 ;
$u = - 43951789 ;
$c = 65 ; // اسکی 65 "A" است

// توجه داشته باشید که %% دو برابر به صورت "%" تک خروجی می شود
printf ("%%b = "%b"\n" , $n ); // نمایش باینری
printf ("%%c = "%c"\n" , $c ); // یک کاراکتر ascii، شبیه به تابع chr() چاپ می کند
printf ("%%d = "%d"\n" , $n ); // عدد صحیح منظم
printf ("%%e = "%e"\n" , $n ); // نماد علمی
printf ("%%u = "%u"\n" , $n ); // نمایش عدد صحیح بدون علامت یک عدد مثبت
printf ("%%u = "%u"\n" , $u ); // نمایش عدد صحیح بدون علامت یک عدد منفی
printf ("%%f = "%f"\n" , $n ); // نمایش یک عدد ممیز شناور
printf ("%%o = "%o"\n" , $n ); // نمایش هشتگانه
printf ("%%s = "%s"\n" , $n ); // خط
printf ("%%x = "%x"\n" , $n ); // نمایش هگزادسیمال (حروف کوچک)
printf ("%%X = "%X"\n" , $n ); // نمایش هگزادسیمال (حرف بزرگ)

Printf ("%%+d = "%+d"\n" , $n ); // توصیفگر علامت با یک عدد صحیح مثبت
printf ("%%+d = "%+d"\n" , $u ); // توصیفگر علامت با عدد صحیح منفی
?>

نتیجه اجرای این مثال:

٪ b = "1010011101011010101101" ٪ c = "a" ٪ d = "43951789" ٪ e = "4.39518e+7" ٪ u = "43951789" ٪ u = "4251015507" ٪ f = "43951789.0000" ٪ o = " 255 " %s = "43951789" %x = "29ea6ad" %X = "29EA6AD" %+d = "+43951789" %+d = "-43951789"

مثال شماره 8 printf(): توصیفگرهای رشته

$s = "میمون" ;
$t = "بسیار میمون" ;

Printf("[%s]\n" , $s ); // خروجی خط معمولی
printf ("[%10s]\n"، $s); // راست با فاصله تراز
printf ("[%-10s]\n"، $s); // تراز چپ با فاصله ها
printf ("[%010s]\n" , $s ); // padding صفر با رشته ها نیز کار می کند
printf ("[%"#10s]\n" , $s ); // از کاراکتر مکمل "#" خود استفاده کنید
printf ("[%10.10s]\n" , $t ); // تراز چپ با برش 10 کاراکتری
?>

تابع استاندارد خروجی کنسول در C printf است. توضیحات آن در فایل هدر stdio.h موجود است. با استفاده از این عملکرد، می توانید داده ها یا پیام های کاربر را به کنسول خروجی دهید. زبان C به حروف بزرگ و کوچک حساس است. به عنوان مثال، دو تابع printf و scanf با عملکردهای مشابه Printf و Scanf متفاوت هستند. تمام کاراکترهای توابع printf و scanf نیز باید با حروف کوچک نوشته شوند. یکی از ساده‌ترین نمونه‌های C printf که پیام سلام جهان آشنا را چاپ می‌کند، این است:

تعریف توابع گروه printf در فایل "stdio.h"

فایل "stdio.h" به کتابخانه ورودی/خروجی استاندارد در زبان C اشاره دارد. توضیحات printf و عملکردهای مشابه در آن به شرح زیر است

توابع فهرست شده داده ها را از مکان های خاص بارگیری می کنند، آنها را به یک رشته کاراکتر تبدیل می کنند و به جریان های خروجی مشخص می فرستند.

خانواده توابع printf

توابع گروه printf در زبان C برای پردازش و قالب بندی داده های خروجی به جریان استاندارد استفاده می شود. علاوه بر این، توابع printf و vprintf در جریان استاندارد stdout می‌نویسند، توابع fprintf و vfprintf مقادیر آرگومان‌های خروجی را به برخی از جریان‌های خروجی مشخص ارسال می‌کنند و snprintf، sprintf، vsnprintf و vsprintf داده‌ها را به یک رشته کاراکتری می‌نویسند. همه توابع فهرست شده با استفاده از یک رشته فرمت کار می کنند که تبدیل آرگومان مورد نیاز برای خروجی را مشخص می کند.

تابع fprintf نتیجه را در جریان خروجی می نویسد. تابع sprintf نتیجه را به یک بافر، که یک رشته کاراکتر است، خروجی می دهد. اگر رشته خروجی از اندازه آرایه بافر بیشتر شود، رفتار تابع تعریف نشده است.

تابع snprintf، مانند تابع قبلی، داده ها را در بافر رشته ای می نویسد. رشته کاراکتر به دست آمده تهی می شود مگر اینکه bufsz (اندازه بافر) صفر باشد. در غیر این صورت، اگر bufsz صفر باشد، هیچ چیزی به بافر خروجی نمی شود، و خود بافر ممکن است یک اشاره گر تهی باشد، اما مقدار بازگشتی (تعداد بایت هایی که باید نوشته می شد) هنوز محاسبه می شود.

تابع printf_s اساساً مانند printf عمل می کند، به جز یک چیز. تفاوت اصلی در توضیحات printf_s در C و printf در موارد زیر است: تابع printf_s رشته قالب را برای کاراکترهای معتبر بررسی می کند، برخلاف printf که فقط رشته فرمت را برای یک اشاره گر تهی بررسی می کند.

بیایید نگاهی دقیق تر به تابع printf بیندازیم.

توضیحات کلی

در C، چاپ کاراکترها در خروجی استاندارد با فراخوانی تابع printf انجام می شود. دستور printf در C مجموعه ای از داده های خروجی را فرمت می کند و به stdout می فرستد. مقادیر ارسال شده به عنوان آرگومان های تابع مطابق رشته فرمت مشخص شده به کنسول خروجی می شود که به نوبه خود شامل دو نوع عنصر است. نوع اول کاراکترهایی است که روی صفحه نمایش داده می شود و عناصری که ویژگی های قالب داده را تعیین می کنند و مسئولیت روش ارائه آرگومان ها در هنگام خروجی را بر عهده دارند، متعلق به نوع دوم هستند.

هنگام خروجی متغیرها با printf در C، ترکیب‌های خاصی از کاراکترها در رشته آرگومان با داده‌های تبدیل شده بر اساس آن کاراکترها جایگزین می‌شوند و هر نوع داده مشخصات فرمت خروجی خود را دارد.

نوع تابع و مقدار بازگشتی

تابع printf دارای یک مقدار صحیح است که تعداد کاراکترهای چاپ شده روی صفحه را نشان می دهد. به عنوان مثال، می توانید اختصاص دهید:

int k = printf("سلام %c %d %s"، "a"، 11، "همه!")،

و سپس مقدار متغیر k به راحتی می تواند تعیین کند که آیا خطا در خروجی رخ داده است یا خیر. اگر مقدار منفی برگردانده شود (اگر تابع "-1" را برگرداند)، می توانیم نتیجه بگیریم که در حین اجرای آن خطایی رخ داده است.

نحو و وابستگی ها

برای استفاده از تابع printf، باید فایل هدر "stdio.h" را به صورت زیر وارد کنید:

#عبارتند از

قالب تابع به نظر می رسد:

int printf (const char *قالب، ...)

بیضی به فهرستی از آرگومان هایی که باید خروجی شوند اشاره دارد. تابع printf را می توان با تعداد متفاوتی از آرگومان ها استفاده کرد، اما اولین مورد همیشه با گیومه های دوطرفه در هر دو طرف مشخص می شود، و هر کدام بعدی باید با کاما از قبلی جدا شوند. آنچه در دو گیومه نوشته می شود و مشخصات قالب نیست بدون تغییر چاپ می شود، در غیر این صورت در صورت برخورد با مشخص کننده، نوع مقدار آن کپی می شود.

فرم برای تعیین مشخصات فرمت:

%[flags][width][.position][length]نوع

قالب بندی با printf در مقادیر خروجی C

رشته قالب مشخص شده در پرانتز پس از نام تابع فراخوانی شده تنها در یک جهت خوانده می شود: از چپ به راست، و اولین آرگومان مشخص شده پس از خود این خط تنها در صورتی چاپ می شود که با اولین مشخصات مواجه شود. تا پایان رشته فرمت، مشخصات مشخص شده در آن شروع به تبدیل و چاپ آرگومان های بعدی می کند. در یک رشته قالب، کاراکتر فاصله به عنوان یک کاراکتر معمولی در نظر گرفته می شود و زمانی که در یک عبارت مشخصات قالب استفاده نشده باشد، خروجی می شود.

کاراکتر "%" شروع مشخصات فرمت خروجی و به دنبال آن کد قالب را نشان می دهد. همه فیلدهای مشخصات اعداد یا کاراکترهای جداگانه هستند که شرایط قالب بندی را تعریف می کنند.

خروجی printf فرمت شده در C ویژگی های خاص خود را دارد. اگر تعداد آرگومان های فهرست شده از تعداد مشخصات قالب بیشتر شود، از آنها صرفنظر می شود و چاپ نمی شوند. در غیر این صورت، اگر در لیست آرگومان هایی که باید چاپ شوند، مشخصات قالب بیشتر از مقادیر باشد، نتیجه فراخوانی تابع مشخص نمی شود.

برای مشخص کردن دقیق اینکه کدام آرگومان باید استفاده شود، می‌توان از «%m$» به جای «%» و «*m$» به جای «*» استفاده کرد، با m، یک مقدار اعشاری صحیح، که موقعیت آرگومان مورد نظر را نشان می‌دهد. (فهرست سازی از یک شروع می شود).

گزینه ها

پرچم های استفاده شده در رشته قالب
پرچمشرح
- تراز کردن نتیجه به سمت چپ در قسمت خروجی
+ هنگام چاپ یک مقدار عددی که دارای علامت است، "+" مجبور می شود قبل از مقدار مثبت چاپ شود (به طور پیش فرض، فقط "-" قبل از مقدار منفی چاپ می شود.
0 برای اعداد صحیح و ممیز شناور، زمانی که عرض فیلد بزرگتر از طول عدد باشد، به جای کاراکترهای فاصله، از صفرهای ابتدایی برای پر کردن ارقام سمت چپ استفاده می‌شود. برای اعداد صحیح، اگر دقت به صراحت مشخص شده باشد، پرچم نادیده گرفته می شود. برای سایر تبدیل هایی که از این پرچم استفاده می کنند، رفتار تابع تعریف نشده است. اگر پرچم "-" وجود داشته باشد، پرچم "0" نادیده گرفته می شود
فضااگر نتیجه خروجی یک عبارت امضا شده با آن علامت علامت شروع نشود یا خالی باشد، یک فاصله به نتیجه اضافه می شود. اگر پرچم "+" وجود داشته باشد، پرچم "فضا" نادیده گرفته می شود
# یک شکل جایگزین از تبدیل انجام می شود

مشخص کننده های فرمت های مختلف

تعیین کننده قالباستفاده و توضیحات برای printf Cنوع استدلال
% نوشتن کلمه "%"
جخروجی یک کاراکتر آرگومان به یک نوع کاراکتر بدون علامت تبدیل می شود. هنگام استفاده از اصلاح کننده "l"، آرگومان به یک رشته کاراکتر تبدیل می شودکاراکتر بدون امضا
سیک رشته از کاراکترها را چاپ کنید. آرگومان باید یک اشاره گر به عنصر شروع آرایه char باشدکاراکتر *
د
من
چاپ نمایش دهدهی یک مقدار صحیح امضا شدهبین المللی
oخروجی نمایش هشتگانه مقدار صحیح بدون علامتبدون امضا
ایکس
ایکس
نمایش هگزادسیمال خروجی مقدار صحیح بدون علامت. کاراکترهای "a"، "b"، "c"، "d"، "e"، "f" برای تبدیل "x" استفاده می شوند. و برای تبدیل "X" - "A"، "B"، "C"، "D"، "E"، "F"بدون امضا
توتبدیل اعشاری خروجی بدون مقدار صحیح امضا شده. اگر مقدار تبدیل شده و دقت هر دو 0 باشد، هیچ کاراکتری خروجی نمی شودبدون امضا
f
اف
چاپ نمایش اعشاری یک عدد ممیز شناور امضا شدهدو برابر
ه
E
خروجی نماد علمی اعشاری، گرد و تبدیل به طوری که یک رقم قبل از نقطه اعشار وجود داشته باشد، و تعداد ارقام بعد از نقطه اعشار با دقت نمایش مطابقت دارد (دقت پیش فرض 6 است و اگر 0 مشخص شود، آنگاه نماد اعشاری اصلاً خروجی نیست). کاراکتر "e" با حروف بزرگ یا کوچک بسته به تبدیل نمایش داده می شوددو برابر
آ
آ
نمایش هگزادسیمال خروجی یک عدد ممیز شناوردو برابر
g
جی
خروجی نمایش اعشاری یک عدد ممیز شناور یا نمایش نمایی اعشاری آن بسته به مقدار و دقتدو برابر
nتعداد عناصر چاپ شده توسط printf را برگردانید. نتیجه روی متغیری که آرگومان به آن اشاره می کند نوشته می شود. مشخصات ممکن است حاوی پرچم، عرض میدان یا دقت نباشددرون *
پخروجی اشاره گرخالی *

اصلاح کننده عرض فیلد

خط فرمت در printf C می تواند یک عدد صحیح بعد از علامت درصد و قبل از دستور format بنویسد. این یک اصلاح کننده عرض میدان است و بر نمایش داده های نمایش داده شده تأثیر می گذارد. کوچکترین عرض فیلد در نظر گرفته شده برای یک مقدار با این عدد تعیین می شود و وجود چنین اصلاح کننده ای در صورتی که آرگومان کوچکتر از فیلد اختصاص داده شده به آن باشد باعث می شود که فاصله یا صفر به نتیجه اضافه شود. مکان پیش فرض کاراکتر space است، اما می توانید با پیشوند مشخصات عرض، آن را صفر کنید. اصلاح کننده حداقل عرض را مشخص می کند و هر مقداری که بیشتر از این حداقل باشد بدون تداخل چاپ می شود. به عنوان مثال، عددی که از کمتر از هشت کاراکتر تشکیل شده و با مشخصات "%08d" چاپ شده باشد، به هشت کاراکتر مورد نیاز با صفر اضافه می شود.

اصلاح کننده های مشابه همچنین می توانند پارامترهای دقت یا تراز را مشخص کنند.

اصلاح کننده دقت

اصلاح کننده دقیق برای تعیین تعداد ارقام اعشاری برای چاپ در نمایش اعداد استفاده می شود. برای افزودن یک اصلاح کننده دقیق، باید بعد از مشخصات عرض فیلد یک نقطه قرار دهید و بعد از آن مقدار دقیق مورد نظر را مشخص کنید. اصلاح کننده دقیق برای فرمت های "e"، "f"، "a"، "E"، "A" و "F" تعریف شده است. برای اعداد صحیح، اصلاح کننده تعداد ارقام نمایش داده شده را تنظیم می کند، در صورت لزوم صفر به رقم سمت چپ اضافه می کند و هنگام نمایش اعداد گویا، تعداد ارقام اعشاری مورد نیاز را تعیین می کند. برای متغیرهای رشته، عدد زیر نقطه در اصلاح کننده دقیق، حداکثر طول میدان را برای خروجی تعیین می کند. به عنوان مثال، با توجه به مشخصات فرمت "%4.8"، یک رشته خروجی خواهد شد که طول آن در محدوده چهار تا هشت کاراکتر است، در صورت تجاوز، بیرونی ترین کاراکترها حذف خواهند شد.

سایر اصلاح کننده های قالب

تراز پیش فرض به صورت راست تراز شده است، اما با قرار دادن علامت "-" بعد از "%" می توان آن را تغییر داد. این مشخصات فرمت تراز چپ را تنظیم می کند.

علاوه بر این، تابع printf می تواند بین انواع کوتاه و بلند مقادیر صحیح قابل چاپ تمایز قائل شود. مشخص کننده های معتبر «o»، «d»، «u»، «i»، «x» و «X» هستند. نوع مقدار طولانی توسط اصلاح کننده "l" و نوع مقدار کوتاه توسط اصلاح کننده "h" مشخص می شود. به عنوان مثال، هنگام خروجی یک عدد صحیح طولانی و یک مقدار int بدون علامت کوتاه، مشخصات قالب به ترتیب "%ld" و "%hu" هستند.

مثال ها

1. توضیحات printf C و نتایج فراخوانی هر تابع:

2. نمایش یک پیام محاوره ای ساده:

printf ("پیام");

3. کد برنامه:

عبارات مشخص شده قبل از مشخصات قالب بر روی صفحه چاپ می شوند، همانطور که آرگومان های زیر رشته قالب هستند. نتیجه اجرای توابع printf C بالا، شرح خروجی:

این مثال نمایش با استفاده از فرمت های مختلف رشته ها، متغیرهای عدد صحیح، کاراکترها و اعداد ممیز شناور را نشان می دهد.

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

تابع scanf برای خواندن ورودی صفحه کلید استفاده می شود. توضیحات printf و scanf به زبان C در فایل هدر "stdio.h" ارائه شده است.

scanf("مشخص کننده های قالب"،&value1،&value2، ...);

یک مثال ساده از کار با تابع scanf:

#عبارتند از

رشته sprintf(فرمت رشته [، آرگ های ترکیبی])

رشته ای را که با استفاده از قالب رشته فرمت ایجاد شده است برمی گرداند.

رشته قالب شامل دستورات است: کاراکترهای معمولی (به جز %)، که در رشته نتیجه کپی می شوند، و توصیفگرهای تحول که هر کدام با یکی از پارامترها جایگزین می شود. این نیز در مورد fprintf() , sprintf()و printf() .

هر مشخص کننده تبدیل شامل یک علامت درصد (%) و به دنبال آن یک یا چند عنصر اضافی است (به ترتیبی که در اینجا فهرست شده اند):

    اختیاری مشخص کننده padding ، که مشخص می کند از کدام کاراکتر برای اضافه کردن نتیجه به طول مورد نیاز استفاده می شود. این می تواند یک فاصله یا 0 باشد. پیش فرض فضا است. یک کاراکتر جایگزین را می توان با " مشخص کرد. مثال های زیر را ببینید.

    اختیاری توصیفگر تراز ، که تراز را به چپ یا راست تعیین می کند. به طور پیش فرض به سمت راست تراز شده است، - برای تراز به چپ استفاده می شود.

    شماره اختیاری تعیین کننده عرض ، که حداقل تعداد کاراکترهایی را که نتیجه این تبدیل شامل می شود را مشخص می کند.

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

  1. مشخص کننده نوع ، که نحوه برخورد با نوع داده آرگومان را مشخص می کند. انواع معتبر:

    % نماد درصد است. از استدلال استفاده نمی شود.
    b - آرگومان به عنوان یک عدد صحیح و خروجی به عنوان یک عدد باینری در نظر گرفته می شود.
    ج - آرگومان به عنوان یک عدد صحیح و خروجی به عنوان یک کاراکتر با کد اسکی مربوطه در نظر گرفته می شود.
    د - آرگومان به عنوان یک عدد صحیح در نظر گرفته می شود و به عنوان یک عدد اعشاری امضا شده خروجی می شود.
    ه - استدلال به این صورت تعبیر می شود شناورو در نماد علمی (به عنوان مثال 1.2e+2) خروجی است.
    u - آرگومان به عنوان یک عدد صحیح در نظر گرفته می شود و به عنوان یک عدد اعشاری بدون علامت خروجی می شود.
    و - استدلال به این صورت تعبیر می شود شناورو به صورت یک عدد ممیز شناور اعشاری خروجی می شود.
    o - آرگومان به عنوان یک عدد صحیح و خروجی به عنوان یک عدد اکتال در نظر گرفته می شود.
    s - آرگومان به عنوان یک رشته در نظر گرفته می شود.
    x - آرگومان به عنوان یک عدد صحیح در نظر گرفته می شود و به عنوان یک عدد هگزادسیمال (با حروف کوچک) خروجی می شود.
    X - آرگومان به عنوان یک عدد صحیح در نظر گرفته می شود و به عنوان یک عدد هگزادسیمال (با حروف بزرگ) خروجی می شود.

از PHP 4.0.6، رشته قالب از شماره گذاری و ترتیب مجدد پارامترها پشتیبانی می کند. مثلا:


این کد خروجی "There are 5 monkeys in the tree" خواهد بود. حال تصور کنید که رشته فرمت در یک فایل جداگانه قرار دارد که سپس به زبان دیگری ترجمه می شود و ما آن را به این صورت بازنویسی می کنیم:

مثال 2: تغییر ترتیب پارامترها

$format = "%s حاوی %d میمون است" ;

?>
مشکلی وجود دارد: ترتیب مشخص‌کننده‌های تبدیل با ترتیب آرگومان‌ها مطابقت ندارد. ما نمی‌خواهیم کد را تغییر دهیم و باید مشخص کنیم که کدام آرگومان با کدام مشخص‌کننده تبدیل مطابقت دارد.

مثال 3: تغییر ترتیب پارامترها

فرمت $ = "%2\$s حاوی %1\$d میمون است";
printf ($format، $num، $location)؛
?>
شماره گذاری آرگومان کاربرد دیگری نیز دارد: به شما امکان می دهد یک آرگومان را چندین بار بدون ارسال پارامترهای اضافی به تابع چاپ کنید.

زنگ

کسانی هستند که قبل از شما این خبر را می خوانند.
برای دریافت مقالات جدید مشترک شوید.
پست الکترونیک
نام
نام خانوادگی
چگونه می خواهید زنگ را بخوانید؟
بدون هرزنامه