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