美文网首页
「C」 printf() sprintf()

「C」 printf() sprintf()

作者: 叨码 | 来源:发表于2019-05-23 17:01 被阅读0次

    printf()
    直接上代码:

    /*printf1.c --演示printf()的一些特性*/
    #include<stdio.h>
    
    int main(void){
        int ten = 10;
        int two = 2;
    
        printf("Doing it right:\n");
        printf("%d minus %d is %d \n",ten,2,ten-two );
        printf("Doing it wrong:\n");
        //注意,这里故意遗漏了两个参数
        printf("%d minus %d is %d \n", ten);
    
        return 0;
    }
    
    

    编译时会有警告:

    clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
    /Users/ing/Documents/c:c++/cprimer/printf1.c:12:20: warning: more '%' conversions than data arguments [-Wformat]
            printf("%d minus %d is %d \n", ten);
                             ~^
    1 warning generated.
    

    大致翻译下意思是说前边的%d多于后边你参数个数,两者数量对应不上。
    然后,我们继续运行结果如下:

    Doing it right:
    10 minus 2 is 8 
    Doing it wrong:
    10 minus 0 is 1573978167 
    
    

    这里我们看下最后一行打印的值 ,有没有发现 打印出来的0 和 1573978167
    这两个值其实就是因为我们没有给后两个%d对应参数,直接打印了内存中的任意值。
    结论:
    在printf()函数中,要确保转换说明符(%d) 和你后边给出的待打印值的数量相等。

    sprintf()

    sprintf的作用是将一个格式化的字符串输出到一个目的字符串中,而printf是将一个格式化的字符串输出到屏幕。sprintf的第一个参数应该是目的字符串,如果不指定这个参数,执行过程中出现 "该程序产生非法操作,即将被关闭...."的提示。

    sprintf()会根据参数format 字符串来转换并格式化数据,然后将结果复制到参数str 所指的字符串数组,直到出现字符串结束('\0')为止。关于参数format 字符串的格式请参考printf()。

    相关文章

      网友评论

          本文标题:「C」 printf() sprintf()

          本文链接:https://www.haomeiwen.com/subject/yvebzqtx.html