C库函数:scanf、fscanf、printf、fprintf、sprintf、 snprintf

1. scanf

 函数原型 int scanf(const char *format, ...); 

功能:从标准输入 stdin 读取格式化输入。

2.fscanf

函数原型 int fscanf(FILE *stream, const char *format, …);

功能:从stream指向的流(而不是标准输入流)中读取数据。除此之外,与scanf函数完全相同。

比如:从流fp读取十进制的整数值并保存至变量x:fscanf(fp, “%d”, &x);

3. printf

函数原型:int printf(const char *format, ...) ;

format 是字符串,包含了要被写入到标准输出 stdout 的文本

功能:发送格式化输出到标准输出 stdout。

4. fprintf

函数原型:int fprintf(FILE *stream, const char *format, ...);

stream 是指向 FILE 对象的指针,该 FILE 对象标识了流。format 是 C 字符串,包含了要被写入到流 stream 中的文本

功能:向stream指向的流(而不是标准输出流)写入数据,除此之外,与printf函数完全相同。

比如:向流fp写入整数x的十进制数值: fprintf(fp, "%d", x);

Example1:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   FILE * fp;

   fp = fopen ("file.txt", "w");
   fprintf(fp, "%s %s %s %d", "We", "are", "in", 2018);
   
   fclose(fp);
   
   return(0);
}

创建文件 file.txt,它的内容如下:We are in 2018

 5. sprintf

函数原型: int sprintf(char *str, const char *format, ...);

str 是指向一个字符数组的指针,该数组存储了 C 字符串。format 是字符串,包含了要被写入到字符串 str 的文本。

功能:发送格式化输出到 str 所指向的字符串。

example2:

#include <stdio.h>
#include <math.h>  //for M_PI

int main()
{
   char str[80];

   sprintf(str, "Pi 的值 = %f", M_PI);
   puts(str);
   
   return(0);
}

结果:Pi 的值 = 3.141593

6. snprintf

函数原型:

int snprintf(char *restrict buf, size_t n, const char * restrict  format, ...);

函数说明:先将可变参数 “...” 按照format的格式格式化为字符串,然后再将其拷贝至dest_str中。

函数返回值:若成功则返回欲写入的字符串长度,若出错则返回-1。

注意:如果格式化后的字符串长度小于size,则将字符串全部拷贝至dest_str中,并在字符串结尾处加上‘’;

           如果格式化后的字符串长度大于或等于size,则将字符串的(size-1)拷贝至dest_str中,然后在字符串结尾处加上''.

example3:

#include <stdio.h>
#include <string.h>
 
int main(int argc, char **argv)
{
    char str[10];
    int len = snprintf(str, sizeof(str), "0123456789");

    printf("%d
", (int)sizeof(str));  
    printf("str=%s
", str);
    printf("%d
", (int)strlen(str));
     printf("%d
", len);
    return 0;
}

输出:

10
str=0123456789     
10
10

原文地址:https://www.cnblogs.com/bencai/p/9145458.html