目录
Scanf/fscanf/sscanf
1.scanf
首先scanf我们的很熟悉,他就是从键盘上输入数据,准确的来说就是:
从标准输入(键盘)读取格式化的数据。
2.fscanf
而fscanf可以说是fscanf包含了scanf的功能,对于这个函数的定义是这样子的:
从所有的输入流读取格式化的数据。
int fscanf (FILE * stream, const char * format, ...);
fscanf比scanf 多了一个FILE * 的参数,也就是打开的文件的地址参数,所有当我们进行使用的时候,我们可以先像scanf一样写出来,然后再在前面加上一个FILE * 的参数。
#define _CRT_SECURE_NO_WARNINGS 1
/* fscanf example */
#include <stdio.h>
int main()
{
char str[80];
float f;
FILE* pFile;
pFile = fopen("myfile.txt", "w+");
fprintf(pFile, "%f %s", 3.1416, "PI");
rewind(pFile);
fscanf(pFile, "%f", &f);
fscanf(pFile, "%s", str);
fclose(pFile);
printf("I have read: %f and %s \n", f, str);
return 0;
}
3.sscanf
看下对这个函数的定义
int sscanf ( const char * s, const char * format ,... );
从字符串中读取到格式化的数据,也就是说我们输入进去的数据,sscanf会转化成字符串的形式。也就是:
从字符串中读取一个格式化的数据。
而对于参数我们可以再对比一下,与fscanf相比,sscanf将第一个参数改成了字符指针,也就是从字符指针中读一个数据,到后面的格式化数据里面去。
#define _CRT_SECURE_NO_WARNINGS 1
/* sscanf example */
#include <stdio.h>
int main()
{
char sentence[] = "Rudolph is 12 years old";
char str[20];
int i;
sscanf(sentence, "%s %*s %d", str, &i);//%*s 忽略s类型的值
printf("%s -> %d\n", str, i);
return 0;
}
Printf/fprintf/sprintf
1.printf
printf就是一个打印函数,从键盘上输出,对于它来说就是:
把格式化的数据到标准输出(屏幕)上
2.fprintf
fprintf比printf高级一点,除了可以实现printf的功能之外,还可以输出到文件等其它地方
他的定义是:把格式化的数据输出到所有输出流(屏幕/文件)上
int fprintf (FILE * stream, const char * format, ...);
fprintf和printf相差FILE *的参数,可以先按照printf的格式写,然后再加上参数,就可以很好的使用fprintf了。
下面例子,将从键盘输入的名字输出到文件当中:
#define _CRT_SECURE_NO_WARNINGS 1
/* fprintf example */
#include <stdio.h>
int main()
{
FILE* pFile;
int n;
char name[100];
pFile = fopen("myfile.txt", "w");
for (n = 0; n < 3; n++)
{
puts("please, enter a name: ");
gets(name);
fprintf(pFile, "Name %d [%-10.10s]\n", n + 1, name);
}
fclose(pFile);
return 0;
}
3.sprintf
使用相同的文本组成字符串,但不打印其内容,而是存储在str指向的缓冲区中的C字符串中。
定义为:把格式化的数据输出转换成字符串。
int sprintf ( char * str, const char * format, ...);
对于sprintf,与fprintf相比将文件指针改成了字符指针,即从后面的输出的格式化中读数据,存放到前面的字符指针里面去。
下面例子,将从输出内容存放到字符串中:
#define _CRT_SECURE_NO_WARNINGS 1
/* sprintf example */
#include <stdio.h>
int main()
{
char buffer[50];
int n, a = 5, b = 3;
n = sprintf(buffer, "%d plus %d is %d", a, b, a + b);
printf("[%s] is a string %d chars long\n", buffer, n);
puts(buffer);
return 0;
}