printf, fprintf, sprintf, snprintf, printf_s, fprintf_s
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody>| معرفة في ملف <stdio.h>
|
||
| (1) | ||
int printf( const char *format, ... ); |
(حتى C99) | |
int printf( const char *restrict format, ... ); |
(منذ C99) | |
| (2) | ||
int fprintf( FILE *stream, const char *format, ... ); |
(حتى C99) | |
int fprintf( FILE *restrict stream, const char *restrict format, ... ); |
(منذ C99) | |
| (3) | ||
int sprintf( char *buffer, const char *format, ... ); |
(حتى C99) | |
int sprintf( char *restrict buffer, const char *restrict format, ... ); |
(منذ C99) | |
int snprintf( char *restrict buffer, int bufsz, const char *restrict format, ... ); |
(4) | (منذ C99) |
تحمل البيانات من المواضع المحددة, وتحولها إلى سلسلة حروف ثم تخرج الناتج إلى مكان ما.
stream.buffer. السلوك غير معرف حال كون المصفوفة buffer لا تكفي حجم الناتج (بما فيه حرف الـ '\0' في الآخر).buffer
. لا يتم كتابة أكثر من bufsz - 1 من الحروف يتم اضافة '\0' الى آخر المصفوفة مالم تكن bufs بصفر.المعطيات
| stream | - | تيار الإخراج الذي ستتم فيه الكتابة | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| buffer | - | مؤشر إلى سلسلة من الحروف منتهية بـ'\0' ستتم الكتابة فيها
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| bufsz | - | الحد الأقصى لعدد الحروف التي ستكتب شاملة '\0'
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| format | - | مؤشر إلى سلسلة من الحروف منتهية بـ'\0' تبين كيفية فهم المعطيات
. تتكون سلسلة التنسيق (format string) من حروف عادية (عدا %) يتم نسخها بدون تعديل إلى تيار الإخراج ومن علامات تحويل. كل علامة تحويل تكون على الهيئة الآتية:
توجد الأنواع التالية من التحويلات:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ... | - | المعطيات التي تحدد البيانات المراد كتابتها | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
القيمة المُرجعة
buffer (لا يتم احتساب '\0' التي في النهاية) أو قيمة سالبة في حالة حدوث خطأ في الترميز (عند تحويل الحروف فقط)buffer (لا يتم احتساب '\0' التي في النهاية) إذا لم تؤخذ bufsz في الاعتبار أو قيمة سالبة في حالة حدوث خطأفي الترميز (عند تحويل الحروف فقط)ملحوظات
تحدد POSIX أنه يتم وضع قيمة 1 داخل errno عند حدوث خطأ.
مثال
#include <stdio.h>
int main(void)
{
printf("Strings:\n");
const char* s = "Hello";
printf("\t.%10s.\n\t.%-10s.\n\t.%*s.\n", s, s, 10, s);
printf("Characters:\t%c %%\n", 65);
printf("Integers\n");
printf("Decimal:\t%i %d %.6i %i %.0i %+i %u\n", 1, 2, 3, 0, 0, 4, -1);
printf("Hexadecimal:\t%x %x %X %#x\n", 5, 10, 10, 6);
printf("Octal:\t%o %#o %#o\n", 10, 10, 4);
printf("Floating point\n");
printf("Rounding:\t%f %.0f %.32f\n", 1.5, 1.5, 1.3);
printf("Padding:\t%05.2f %.2f %5.2f\n", 1.5, 1.5, 1.5);
printf("Scientific:\t%E %e\n", 1.5, 1.5);
printf("Hexadecimal:\t%a %A\n", 1.5, 1.5);
}
الخرج:
Strings:
. Hello.
.Hello .
. Hello.
Characters: A %
Integers
Decimal: 1 2 000003 0 +4 4294967295
Hexadecimal: 5 a A 0x6
Octal: 12 012 04
Floating point
Rounding: 1.500000 2 1.30000000000000004440892098500626
Padding: 01.50 1.50 1.50
Scientific: 1.500000E+00 1.500000e+00
Hexadecimal: 0x1.8p+0 0X1.8P+0
أنظر أيضا
| تكتب خرج الى stdout أو تيار ملف (FILE*) أو مصفوفة مستخدمة variable arguments list (دالة) | |
| تكتب سلسلة من الحروف إلى داخل تيار ملف. (دالة) | |
| تقرأ مدخل منسق من stdin أو تيار ملف (FILE*) أو مصفوفة (دالة) | |
مقالة مرجع C++ عن printf, fprintf, sprintf, snprintf
| |