C语言 printf格式及应用
函数原型: int printf(char * format[,argument,…]);
函数功能:按规定格式向输出设备(一般为显示器)输出数据,并返回实际输出的字符数,若出错,则返回负数。
一、规则
1.转换说明符
%a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99)
%c 字符
%d 有符号十进制整数
%f 浮点数(包括float和double)
%e(%E) 浮点数指数输出[e-(E-)记数法]
%g(%G) 浮点数不显无意义的零"0"
%i 有符号十进制整数(与%d相同)
%u 无符号十进制整数
%o 八进制整数 e.g. 0123
%x(%X) 十六进制整数<?xml:namespace prefix = st1 />() e.g. 0x1234
%p 指针
%s 字符串
%% “%”
2.标志
左对齐:“-” e.g. “%-20s”
右对齐:“+” e.g. “%+20s”
空格:若符号为正,则显示空格,负则显示"-" e.g. "% "
#:对c,s,d,u类无影响;对o类,在输出时加前缀o;对x类,在输出时加前缀0x;
对e,g,f 类当结果有小数时才给出小数点。
3.格式字符串(格式)
[标志][输出最少宽度][.精度][长度]类型
“%-md” :左对齐,若m比实际少时,按实际输出。
“%m.ns”:输出m位,取字符串(左起)n位,左补空格,当n>m or m省略时m=n
e.g. “%7.2s” 输入CHINA
输出" CH"
“%m.nf”:输出浮点数,m为宽度,n为小数点右边数位
e.g. “%” 输入3852.99
输出3853.0
长度:为h短整形量,l为长整形量
二、应用
目标:创建一个.c文件,并写入Hello
#框架
#include "public.h"
#define ROOT
int main(void)
{
FILE *fp;
fp = fopen("test.c","w+"); //name test.c;"w+" 可读可写
fprintf(fp,"%s","Hello \n");
return 1;
}
细化
#include “public.h”
#define ROOT
int main(void)
{
FILE *fp,*fp1;
int x;
// E:\vscode\Project\FILESYSTEM\CreateFile\test.c
// E:\vscode\Project\FILESYSTEM\CreateFile\test.c
//unsigned char name[100];
// printf(“请输入文件的路径及名称:\n”);
// 输入文件的位置 与名称
// scanf(“%s”,name);
// 判断 要创建的文件是否存在
// r:打开一个用于读取的文件。该文件必须存在。
// fp==fopen(name,"r");
fp = fopen("test.c","r");
if(fp!= NULL)
{
// 如果文件存在则 追加一行
printf("如果test.c 文件存在 则成功打开!\n");
fp=fopen("test.c","a+");
fprintf(fp,"%s","Hello world!\n");
}else{
// 如果文件不存在 则创建文件 test.c
printf("如果test.c文件不存在 则执行此块代码!\n");
// 创建名为test.c文件,"w"该文件可写
// w:创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件。
fp1 = fopen("test.c","w");
if(fp1!=NULL) // 文件已经创建 则加入一行代码
{
fprintf(fp1,"%s","#include <stdio.h> \n");
}else{
// 文件没有创建则
// 把一个描述性错误消息输出到标准错误 stderr void perror(const char *str)
perror("Error: ");
return(-1);
}
}
// 关闭流 fp。刷新所有的缓冲区。
fclose(fp);
return 1;
}
待更新