总结
1.scanf/printf
是标准输入输出流函数(键盘、屏幕)。
2.fscanf/fprintf
适用于所有输入输出流(文件、键盘、屏幕…)。
3.sscanf/sprintf
是把格式化的数据写入某个字符串中,从某个字符串中读取格式化的数据。
第一组:scanf/printf
scanf
/printf
是格式化标准输入输出函数,scanf
默认输入流是 stdin
键盘输入。printf
默认输出流是stdout
屏幕输出。
#include <stdio.h>int main() {int num = 0;scanf("%d" , &num);printf("%d" , num);return 0;
}
第二组:fscanf/fprintf
fscanf
/fprintf
是格式化输入输出函数,fscanf
/fprintf
适用于所有输入输出流。
文件流:
#include <stdio.h>struct Data {char name[20];int age;
};int main() {struct Data data = { "孙悟空" , 18 };FILE* fp = fopen("D:/test.txt", "w+");if (fp == NULL) {perror("fopen:");exit(-1);}fprintf(fp , "%s %d" , data.name , data.age);fclose(fp);fp = NULL;fp = fopen("D:/test.txt", "r");if (fp == NULL) {perror("fopen:");exit(-1);}struct Data temp = { 0 };fscanf(fp , "%s %d" , temp.name , &temp.age);printf("%s %d" , temp.name , temp.age);fclose(fp);fp = NULL;return 0;
}
注:fscanf(stdin , "%d" , &num); == scanf("%d" , &num); fprintf(stdout , "%d" , num); == printf("%d" , num);
第三组:sscanf/sprintf
sprintf
是把格式化的数据写入某个字符串中。
sscanf
从某个字符串中读取格式化的数据。
#include <stdio.h>typedef struct Data {char name[20];int age;double score;
}Data;int main() {Data data = { "孙悟空" , 18 , 20.6 };char buffer[256] = { 0 };sprintf(buffer , "%s %d %lf" , data.name , data.age , data.score);printf("字符串数据:%s\n" , buffer);Data temp = { 0 };sscanf(buffer , "%s %d %lf", temp.name, &temp.age, &temp.score);printf("格式化数据:%s %d %lf", temp.name, temp.age, temp.score);return 0;
}