c语言输出函数详解

C 语言中常用的输出函数主要包含以下几类,分别用于不同的输出场景:


1. printf —— 标准输出到屏幕

int printf(const char *format, ...);

  • 参数

    • format:格式控制字符串。
    • ...:可变参数,根据格式控制字符串中的格式说明符提供相应的数据。
  • 返回值
    成功时返回输出的字符总数;失败时返回负值。


常用格式说明符

格式符 说明 示例输出
%d 有符号十进制整数 printf("%d", -10);-10
%u 无符号十进制整数 printf("%u", 10);10
%f 浮点数(小数) printf("%f", 3.14);3.140000
%.nf 保留 n 位小数的浮点数 printf("%.2f", 3.1415);3.14
%c 单个字符 printf("%c", 'A');A
%s 字符串 printf("%s", "Hello");Hello
%x 无符号十六进制(小写) printf("%x", 255);ff
%X 无符号十六进制(大写) printf("%X", 255);FF
%o 八进制 printf("%o", 10);12
%p 指针地址 printf("%p", ptr);0x7ffee4c7a8
%% 输出一个 % 字符 printf("%%");%

常用格式控制

  • 宽度:指定最小输出宽度(不足时填充空格)

    printf("%5d", 42);   // 输出: "   42"
    printf("%-5d", 42);  // 输出: "42   "(左对齐)
    
  • 填充字符:用 0 填充

    printf("%05d", 42); // 输出: "00042"
  • 精度控制:用于浮点数和字符串

    printf("%.2f", 3.14159); // 输出: "3.14"
    printf("%.3s", "Hello"); // 输出: "Hel"
    
  • 组合使用

    printf("%8.2f", 3.14159);  // 输出: "    3.14"(宽度 8,精度 2)
    printf("%-8.2f", 3.14159); // 输出: "3.14    "(左对齐)
    

示例代码

#include 

int main() {
    int num = 42;
    float pi = 3.14159;
    char ch = 'A';
    char *str = "Hello";

    printf("整数: %d\n", num);         // 输出: 整数: 42
    printf("浮点数: %.2f\n", pi);     // 输出: 浮点数: 3.14
    printf("字符: %c\n", ch);         // 输出: 字符: A
    printf("字符串: %s\n", str);      // 输出: 字符串: Hello
    printf("十六进制: 0x%x\n", num);  // 输出: 十六进制: 0x2a
    printf("指针地址: %p\n", &num);   // 输出: 指针地址: 0x...

    return 0;
}

注意事项

  1. 类型匹配:传入的参数类型需与格式符匹配,否则结果不可预测。
  2. 内存安全printf 不检查字符串格式,使用不当可能导致漏洞(如格式化字符串漏洞)。
  3. 换行符printf 不会自动换行,需手动加 \n

2. fprintf —— 输出到指定文件流

原型

int fprintf(FILE *stream, const char *format, ...);

功能

将格式化数据输出到指定的文件流(如文件或标准错误)。

示例

FILE *fp = fopen("log.txt", "w");
fprintf(fp, "Error code: %d\n", 404);
fclose(fp);

效果:在 log.txt 文件中写入 Error code: 404


3. sprintf —— 格式化输出到字符串

原型

int sprintf(char *str, const char *format, ...);

功能

将格式化的数据输出到字符串中。

示例

char buffer[50];
sprintf(buffer, "Pi is approximately %.2f", 3.14159);
printf("%s\n", buffer);

输出Pi is approximately 3.14

⚠️ 注意sprintf 不安全,推荐使用 snprintf


4. snprintf —— 安全的格式化输出到字符串

原型

int snprintf(char *str, size_t size, const char *format, ...);

功能

防止缓冲区溢出,限制输出字符的长度。

示例

char buffer[10];
snprintf(buffer, sizeof(buffer), "Number: %d", 123456);
printf("%s\n", buffer);

输出Number: 1(被截断)


5. puts —— 简单输出字符串(自动换行)

原型

int puts(const char *str);

功能

输出字符串并自动在末尾添加换行符。

示例

puts("Hello, World!");

输出Hello, World!(自动换行)


6. putchar —— 输出单个字符

原型

int putchar(int char);

功能

向标准输出打印一个字符。

示例

putchar('A'); 
putchar('\n');

输出A


7. fputs —— 输出字符串到指定文件流

原型

int fputs(const char *str, FILE *stream);

功能

将字符串输出到指定文件流,不自动换行。

示例

FILE *fp = fopen("data.txt", "w"); fputs("Data saved.\n", fp); fclose(fp);

8. putw —— 向文件写入整数(已过时)

原型

int putw(int w, FILE *stream);

功能

将整数写入文件,不推荐使用,多用 fwrite 替代。


总结:使用场景对比

函数 用途
printf 输出到屏幕
fprintf 输出到文件或其他流
sprintf 输出到字符串(不安全
snprintf 输出到字符串(推荐
puts 输出字符串(自动换行)
putchar 输出单个字符
fputs 输出字符串到指定流(不换行)

你可能感兴趣的:(c/c++进阶,c语言)