5. scanf() printf()

一、printf()一族

(1)printf()

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

主要用法是以format格式输出到stdout标准输出中。

(2)fprintf()

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

相对比printf(),fprintf()不仅可以输出到stderr,stdout等标准输出中,还可以改变流的输出位置。
经常使用的地方:编译或执行一些代码时候,可以将输出信息分别重定向到不同文件中。

(3)sprintf()

int sprintf(char *str, const char *format, ...);
  1. atoi是一个将字符串转换为数值的函数。并且在遇到字符时截至。
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char str[] = "123456";
	char str[] = "123a456";
    printf("%d\n",atoi(str));
    exit(0);
}                  

输出

  1. sprintf()相当于itoa()

    可以将多种类型数据综合起来。作为一个串输出。

	char buf[1024];                                                                                                               

    int year = 2014, month = 5, day = 13; 
        
    sprintf(buf,"%d-%d-%d",year,month,day);
    puts(buf);
    // 输出字符串 2014-5-13

(4)snprintf()

int snprintf(char *str, size_t size, const char *format, ...);
  • sprintf()有一个缺陷,在将数据以某种格式写入buf时,不能确定其大小,会发生越界。
  • 类似于gets()的缺陷,fgets()加入参数size_t size来指定大小。
  • snprintf()同样添加一个size参数。但在使用时fgets(),snprintf()依然会存在一种问题,在没有遇到 \n 情况下,每次只能读取size-1个数据,如果需要放到buf里的数据长,是否能满足要求。

二、scanf()问题

int scanf(const char *format, ...);
int fscanf(FILE *stream, const char *format, ...);
int sscanf(const char *str, const char *format, ...);

注意: 在使用scanf()一族函数时,需要注意格式%s的使用,因为不确定目的地址大小,将一个字符串写入时候可能会越界。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值