您的位置:

如何使用Linux printf格式化输出字符串

一、printf基础语法

printf 是一个常用的函数,用来向标准输出流(stdout)或者文件中输出格式化的内容。其基本语法为:
printf(format, arguments);
其中,format 是字符串,包含两种类型的对象:普通字符和转义序列。转义序列是以 '%' 开头的特殊字符,用来表示实际输出的内容。这些转义字符可以是一个或多个,但必须以一个字母结束。例如:%s 表示一个字符串,%d 表示整数,%c 表示一个字符,%f 表示浮点数等。 arguments 是要输出的变量或常量,用逗号分隔。 下面是一个简单的例子,输出一个字符串和一个整数:
#include <stdio.h>
int main(){
    char str[20] = "hello world";
    int num = 12345;
    printf("%s, %d\n", str, num);
    return 0;
}
输出结果:
hello world, 12345

二、printf中的转义字符

1、%d 和 %i

% d 和 %i 都表示输出一个有符号的十进制整数。但是它们在某些特定的情况下还是有区别的。具体区别需要从历史上来看,% d 是英文单词“decimal”的缩写,而 % i 是英文单词“integer”的缩写。也就是说,% d 用来表示十进制整数,而 % i 则可以表示八进制、十进制或者十六进制整数。 以下是一个例子:
#include <stdio.h>
int main(){
    int a = 123, b = 0123, c = 0x123;
    printf("%d, %i\n", a, a);
    printf("%d, %i\n", b, b);
    printf("%d, %i\n", c, c);
    return 0;
}
输出结果:
123, 123
83, 83
291, 291

2、%c

%c 用来输出一个字符,该字符由 ASCII 码值来确定。例如:
#include <stdio.h>
int main(){
    char c = 'a';
    printf("%c\n", c);
    return 0;
}
输出结果:
a

3、%s

%s 用来输出一个字符串,该字符串可以是一个字符数组或者指针。例如:
#include <stdio.h>
int main(){
    char str[] = "hello world";
    printf("%s\n", str);
    return 0;
}
输出结果:
hello world

4、%f

%f 用来输出一个浮点数,通常情况下它会输出小数点后6位。例如:
#include <stdio.h>
int main(){
    float f = 3.14;
    printf("%f\n", f);
    return 0;
}
输出结果:
3.140000

5、%e 和 %E

% e 和 % E 用来输出科学计数法表示的浮点数。
% e 表示指数部分用小写字母 e 来表示;% E 表示指数部分用大写字母 E 来表示。例如:
#include <stdio.h>
int main(){
    float f = 1.2345e-2;
    printf("%e\n", f);
    printf("%E\n", f);
    return 0;
}
输出结果:
1.234500e-02
1.234500E-02

三、printf中的格式控制

printf 中的格式控制可以通过在 % 后添加一些修饰符来实现。这些修饰符包括:
  • 宽度(width):指定输出字段的最小宽度。
  • 精度(precision):对于浮点数,用来指定小数点后的位数。对于字符串,用来指定输出的字符数。
  • 标志(flag):控制输出的格式,例如左对齐、右对齐、补零等。
以下是一个例子,演示如何使用这些修饰符:
#include <stdio.h>
int main(){
    float f = 3.1415926;
    printf("%8.3f\n", f);
    printf("%-8.3f\n", f);
    printf("%08.3f\n", f);
    printf("%.2s\n", "hello world");
    return 0;
}
输出结果:
   3.142
3.142   
003.142
he

四、总结

printf 是一个非常方便的输出函数,可以使用各种转义字符和格式控制来实现灵活的输出。在使用时需要注意,控制符和对应参数类型必须匹配,否则可能会导致程序崩溃或输出错误的结果。在实际开发中,经常需要使用 printf 输出调试信息和状态信息,因此熟练掌握 printf 的使用是非常重要的。