printf、fprintf、sprintf和snprintf函數

include <stdio.h>
int printf(const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int sprintf(char *str, const char *format, ...);
int snprintf(char *str, size_t size, const char *format, ...);
  • printf是標準的輸出函數。

  • fprintf傳送格式化輸出到一個文件中。根據指定的format(格式)發送信息(參數)到由stream(流)指定的文件,fprintf只能和printf一樣工作。若成功則返回值是輸出的字符數,發生錯誤時返回一個負值。第一個參數是文件指針stream,後面的參數就是printf中的參數,其功能就是把這些輸出送到文件指針指定的文件中,如果想要像printf一樣將輸出送到標準輸出,只需要將文件指針FILE指定爲stdout即可。
    示例程序如下:

include <stdio.h>   
FILE *stream;  
int  main(void)  
{  
    char s[] = "this is a string.\n";  
    char c = '\n';  

    stream = fopen("fprintf.out", "w");  
    fprintf(stream, "%s", s);  
    fprintf(stdout, "abc\n");  
    return 0;  
}  

該程序的運行結果是在fprintf.out文件中存入了this is a string.字符串,在標準輸出輸出了abc字符串。

  • sprintf,字符串格式化命令,主要功能是把格式化的數據寫入某個字符串中。第一個參數str是char型指針,指向將要寫入的字符串的緩衝區。後面第二個參數是格式化字符串。
    示例程序:
#include <stdio.h>  
int main(void)  
{  
    char s[100];   

    sprintf(s, "%%sfjdksfj" );  
    printf("%s\n", s);  
    return 0;  
}  

執行後輸出結果是: %sfjdksfj

  • snprintf函數與sprintf函數類似。它也是將可變個參數按照format格式化成字符串,然後將其複製到str中。
    (1) 如果格式化後的字符串長度 < size,則將此字符串全部複製到str中,並給其後添加一個字符串結束符(‘\0’);(2) 如果格式化後的字符串長度 >= size,則只將其中的(size-1)個字符複製到str中,並給其後添加一個字符串結束符(‘\0’),返回值爲格式化後的字符串的長度。
    示例程序:
include <stdio.h>  
int main(void)  
{  
    char s[10];   

    snprintf(s, 4, "%%sfjdksfj" );  
    printf("%s\n", s);  
    snprintf(s, sizeof(s), "%%sfjdksfj" );  
    printf("%s\n", s);  
    return 0;  
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章