c/c++:printf和scanf辨析

File : scanf_printf.c (直接右键另存为下载)
Type : c
Brief : scanf, printf系列函数的辨析


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

void v_scanf(const char* format, ...)
{
    va_list args;
    va_start(args, format);

    // 标准输入输出
    vscanf(format, args);

    va_end(args);
}

void v_printf(const char* format, ...)
{
    // vprintf, vfprintf, vsprintf类似
    va_list args;
    va_start(args, format);

    // 标准输入输出
    vprintf(format, args);

    va_end(args);
}

int main()
{
    int num;
    float var;
    char str[100];
    char input[] = "128,2.5,plus";
    char ouput[100];

    printf("This is ... parameters.\n");

    // 标准输入输出
    printf("scanf and printf:\n");
    scanf("%d %f %s", &num, &var, str);
    printf("num:%d, var:%f, str:%s\n\n", num, var, str);

    // 文件输入输出,以f开头
    printf("fscanf and fprintf:\n");
    fscanf(stdin, "%d,%f,%s", &num, &var, str);
    fprintf(stdout, "num:%d, var:%f, str:%s\n\n", num, var, str);

    // 字符串输入输出,以s开头
    printf("sscanf and sprintf:\n");
    sscanf(input, "%d,%f,%s", &num, &var, str);
    sprintf(ouput, "num:%d, var:%f, str:%s\n\n", num, var, str);
    printf("%s", ouput);

    // 以v开头的,需要传入va_list参数
    // vscanf, vfscanf, vsscanf类似
    // vprintf, vfprintf, vsprintf类似
    printf("\nThis is va_list parameters.\n");
    printf("vscanf and vprintf:\n");
    v_scanf("%d,%f,%s", &num, &var, str);
    v_printf("num:%d, var:%f, str:%s\n", num, var, str);

    while(1);
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [ yehuohan@gmail.com ]

文章标题:c/c++:printf和scanf辨析

本文作者:Y

发布时间:2018-07-02, 12:39:28

最后更新:2019-05-21, 20:06:10

原始链接:http://yehuohan.github.io/2018/07/02/Gist/c&c++/c-c-printf%E5%92%8Cscanf%E8%BE%A8%E6%9E%90/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。