c函数

sprintf函数
参考:https://www.cnblogs.com/azbane/p/7655421.html
说明1:该函数包含在stdio.h的头文件中,使用时需要加入:#include <stdio.h>
说明2:sprintf与printf函数的区别:二者功能相似,但是sprintf函数打印到字符串中,而printf函数打印输出到屏幕上。sprintf函数在我们完成其他数据类型转换成字符串类型的操作中应用广泛。
说明3:sprintf函数的格式:int sprintf( char *buffer, const char *format [, argument,…] );
除了前两个参数固定外,可选参数可以是任意个。buffer是字符数组名;format是格式 化字符串(像:"=%6.2f%#x%o",%与#合用时,自动在十六进制数前面加上0x)。只要在printf中可以使用的格式化字符串,在 sprintf都可以使用。其中的格式化字符串是此函数的精华。
说明4:可以控制精度
char str[20];
double f=14.309948;
sprintf(str,"%6.2f",f);
说明5:可以将多个数值数据连接起来。
char str[20];
int a=20984,b=48090;
sprintf(str,"=m",a,b);
str[]=“20984 48090”
说明6:可以将多个字符串连接成字符串
char str[20];
char s1={‘A’,‘B’,‘C’};
char s2={‘T’,‘Y’,‘x’};
sprintf(str,"%.3s%.3s",s1,s2);
说明7:可以动态指定,需要截取的字符数
char s1={‘A’,‘B’,‘C’};
char s2={‘T’,‘Y’,‘x’};
sprintf(str,"%.*s%.s",2,s1,3,s2);
sprintf(s, "%
.f", 10, 2, 3.1415926);
说明8:可以打印出i的地址:sprintf(s, “%p”, &i);相当于sprintf(s, "%0
x", 2 * sizeof(void *), &i);
说明9:sprintf的返回值是字符数组中字符的个数,即字符串的长度,不用在调用strlen(s)求字符串的长度。

vfprintf函数
C 标准库 - <stdio.h> C 标准库 - <stdio.h>
描述
C 库函数 int vfprintf(FILE *stream, const char *format, va_list arg) 使用参数列表发送格式化输出到流 stream 中。
声明
下面是 vfprintf() 函数的声明。

int vfprintf(FILE *stream, const char *format, va_list arg)
参数
stream – 这是指向 FILE 对象的指针,该 FILE 对象标识了流。
format – 这是 C 字符串,包含了要被写入到流 stream 中的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。format 标签属性是 %[flags][width][.precision][length]specifier
specifier(说明符) 输出
c 字符
d 或 i 有符号十进制整数
等等
返回值
如果成功,则返回写入的字符总数,否则返回一个负数。

实例
下面的实例演示了 vfprintf() 函数的用法。

#include <stdio.h>
#include <stdarg.h>

void WriteFrmtd(FILE *stream, char *format, …)
{
va_list args;

va_start(args, format);
vfprintf(stream, format, args);
va_end(args);
}

int main ()
{
FILE *fp;

fp = fopen(“file.txt”,“w”);

WriteFrmtd(fp, “This is just one argument %d \n”, 10);

fclose(fp);

return(0);
}
让我们编译并运行上面的程序,这将打开当前目录中的文件 file.txt,并写入以下内容:

This is just one argument 10

fscanf(可以从一个文件流中格式化读出数据,遇到空格或回车就停止)
原型: int fscanf(FILE *stream, const char *format, …); //fscanf(文件流指针,格式字符串,输出表列);
参数:
FILE *stream :文件流指针
const char *format, … :字符串的格式
例子 :

fscanf(fp,"%s %s %d",new1->number,new1->staddress,&new1->price);(这样写的话数据输入到文件中时每个数据中间就会有一个空格)

或者写成:
fscanf(fp,"%s,%s,%d",new1->number,new1->staddress,&new1->price);(这样写的话数据输入到文件中时每个数据中间就会有一个‘,’)

2、fprintf(可以向一个文件中格式化写入数据)
原型: int fprintf(FILE *stream, const char *format, …); //fprintf(文件流指针,格式字符串,输出表列);
参数:
a、FILE *stream :文件流指针
b、const char *format, … :字符串的格式

例子 :
fprintf(fp,"%s %s %d\n",new->number,new->staddress,new->price); //同上

fflush函数
一、fflush函数:更新缓存区

头文件:#include <stdio.h>

函数定义:int fflush(FILE *stream);

函数说明:fflush()会强迫将缓冲区内的数据写回参数stream 指定的文件中. 如果参数stream 为NULL,fflush()会将所有打开的文件数据更新.

二、fflush(stdin):刷新缓冲区把缓冲里面的东西丢掉

fflush(stdout):刷新缓冲区把缓冲里面的东西输出到设备上去

三、简单来说 例如熟悉的scanf 、和printf 都是先把数据放入缓存里面,等缓存’满了‘再把他们丢出来
for(int i=0;i<10;i++)
{
printf("%d",i);
//fflush(stdiout);
}
结果:当没有fflush的时候,结果是0123456789 有fflush的时候 虽然结果也0123456789,不同的是:他们是一个一个蹦出来的

枚 举(enum)
参考:https://blog.csdn.net/weixin_39918693/article/details/80454440
枚举是一个被命名的整型常数的集合, 枚举在日常生活中很常见。
例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,
SATURDAY, 就是一个枚举。
枚举的说明与结构和联合相似, 其形式为:
enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],

标识符[=整型常数],
} ;
enum WEEKDAY{ \该语句定义了一个枚举类型
MONDAY = 1,
TUSEDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
};

enum WEEKDAY day; \该语句声明了一个枚举类型的变量
上述例子中的MONDAY、TUSEDAY等称为枚举元素或枚举常量(本人更倾向于称其为枚举常量,因为这样可以反映其性质),它们是用户自定义的标识符而已。
如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始, 顺
次赋给标识符0, 1, 2, …。但当枚举中的某个成员赋值后, 其后的成员按依次
加1的规则确定其值。

例如下列枚举说明后, x1, x2, x3, x4的值分别为0, 1, 2, 3。
enum string{x1, x2, x3, x4}x;
当定义改变成:
enum string
{
x1,
x2=0,
x3=50,
x4,
}x;
则x1=0, x2=0, x3=50, x4=51
注意:

  1. 枚举中每个成员(标识符)结束符是",", 不是";", 最后一个成员可省略
    “,”。
  2. 初始化时可以赋负数, 以后的标识符仍依次加1。
  3. 枚举变量只能取枚举说明结构中的某个标识符常量。
    例如:
    enum string
    {
    x1=5,
    x2,
    x3,
    x4,
    };
    enum strig x=x3;
    此时, 枚举变量x实际上是7。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值