fwrite fread fscanf fprintf 都是属于C函数用于文件读写,前两者对二进制文件读写,后两者只要用于格式化的读取、输出文本,对文本文件读写。
fscanf() 格式化的读取,从文件中读取
fprintf() 格式化的写入,写入到文件中
10:9.9,xxxx,1.jpg#
fprintf(fp,"%d:%.2f,%s,%s#",10,9.9f,"最便宜的面膜","20150301010101.jpg");
第二个参数是"......"中的东西,%d与%.2f之间是分隔符,%.2f是输出两位数的float
在格式化输出中:%10.8f表示输出结果一共有10位,其中小数点后占8位
*/
注意:在使用fscanf的时候要注意参数的正确使用,例如%f与float类型变量对应,%lf与double类型的变量对应,若不对应数据将不能正确读取,比如%f与double类型变量对应
#include <stdio.h>
//格式化的写入
void test1(){
//定义文件指针
FILE *fp = fopen("fprintf.txt", "w");
//判断文件是否成功打开
if(fp != NULL){
//格式化写入
int productId = 10;
float productPrice = 9.9f;
char *productTitle = "最便宜的面膜";
char *productTitleImg="20150301010101.jpg";
fprintf(fp,"%d:%.2f,%s\n%s", productId,productPrice,productTitle,productTitleImg);
printf("写入成功!\n");
}
fclose(fp);
fp = NULL;
}
//格式化读取
void test2(){
//定义文件指针
FILE *fp = fopen("fprintf.txt", "r");
//判断是否打开成功
if(fp != NULL){
int productId = 0;
float productPrice = 0.0f;
char productTitle[50];
char productTitleImg[50];
//格式化读取
fscanf(fp, "%d:%f,%s\n%s",&productId,&productPrice,productTitle,productTitleImg);
printf("产品编号:%d\n",productId);
printf("产品价格:¥%.2f\n",productPrice);
printf("产品名称:%s\n",productTitle);
printf("产品图片:%s\n",productTitleImg);
}
fclose(fp);
fp = NULL;
}
int main(int argc, const char * argv[]) {
test1();
test2();
printf("Hello, World!\n");
return 0;
}
字符串操作函数:
strcpy:复制char
strcat:连接char
strlen:长度
strcmp:比较是否一样
strstr: 查找字符
strncpy: 复制前几个
pow(x,y):计算x的y次方。x、y及函数值都是double型,要加入头文件 math.h
memcpy: 指定字符个数从指定位置复制到指定位置
sprintf:把格式化的数据写入某个字符串缓冲区。int sprintf( char *buffer, const char *format, [ argument] … );,注意与fprintf区别,前者对缓冲区操作,后者对文件操作。
atoi:AscII To int,同理itoa
atof:AscII To float,同理ftoa
注意atoi函数不是C标准函数,springf是标准函数,尽量使用sprintf
sprintf:格式输出到char*,类似于CString的Format
pritnf:输出到屏幕