开发一个企业网站需要多少钱,网页设计实训总结怎么写,好用的在线地图网站,电商网站开发分析所涉及到的函数如下#xff1a;stdio.h
函数介绍网站#xff1a;cplusplus.com - The C Resources Network
读写文件之前要先打开文件#xff0c;使用完要关闭文件归返空间#xff1a;
fopen 打开
fclose 关闭 返回的是FILE*型#xff0c;第一个参数是文…所涉及到的函数如下stdio.h
函数介绍网站cplusplus.com - The C Resources Network
读写文件之前要先打开文件使用完要关闭文件归返空间
fopen 打开
fclose 关闭 返回的是FILE*型第一个参数是文件的名字第二个参数是以什么形式打开。 一、写入一个字符 第一个参数是要写进的字符第二个是目标地址写进一次会前进一次不会直接覆盖在第一个
#includestdio.h
#includestring.h
#includeerrno.h// 写一个字符 A
int main()
{// 以写的形式打开 名为test.txt的文件FILE* p fopen(test.txt, w);// 判断是否成功if (p NULL){printf(%s\n, strerror(errno));return 1;}// 写入一个字符 fputc(A, p);//再写一个foutc(B,p);//关闭文件fclose(p);p NULL;return 0;
}
二、读出一个字符 从stream 里面读取一个字符返回值就是这个字符如果读到尾部或者发生错误会返回EOF
// 读一个字符
int main()
{// 以读的形式打开FILE* p fopen(test.txt,r);// 判断是否成功if (p NULL){printf(%s\n, strerror(errno));return 1;}// 读取一个字符char pc fgetc(p);printf(%c\n, pc);//关闭文件fclose(p);p NULL;return 0;
}
三、写入一行文本
以 “w” 形式打开文件会清除里面原有的信息 将 str 指向的数据拷贝到 stream指向的地址直到读到 \0
int main()
{// 以写的形式打开一个文件FILE* pt fopen(test.txt, w);// 判断是否成功if (pt NULL){printf(%s\n, strerror(errno));return 1;}// 写入字符串char arr[] hello ;fputs(arr,pt);fputs(baby!\n, pt);// 此时文件里面 只有hello 和 baby// 关闭文件fclose(pt);pt NULL;return 0;
}
四、读一行文本 跟 fputs 差不多多了一个限制num 是读取个数读到n-1 处或者读到新的一行停止
int main()
{// 以读的形式打开一个文件FILE* pt fopen(test.txt, r);// 判断是否成功if (pt NULL){printf(%s\n, strerror(errno));return 1;}// 读取char arr[] {0};fgets(arr, 10, pt);printf(%s, arr);// 关闭文件fclose(pt);pt NULL;return 0;
}
五、格式化输出
输入输出都是相对于内存的打印到文件里相当于输出从文件获取信息相当于输入 跟printf 类似多了一个输出的对象就是格式化将数据打印到 stream 指向的文件里
struct ps
{char arr[20];int i;float f;
};int main()
{struct ps x { mylove,20,1.68f };// 打开文件写的形式FILE* op fopen(test.txt, w);//判断 是否成功if (op NULL){perror(fopen);return 1;}// 写入文件(打印到文件fprintf(op, %s %d %f, x.arr, x.i, x.f);// 打印到屏幕 (stdout 是标准输出流【屏幕】fprintf(stdout, %s %d %f, x.arr, x.i, x.f);// 关闭文件fclose(op);op NULL;return 0;
}
六、格式化输入 类似 scanf 从stream指向的文件按照format的格式化读出数据
struct ps
{char arr[20];int i;float f;
};
int main()
{struct ps bobo {0};// 打开文件 读rFILE* qp fopen(test.txt, r);// 判断……// 读 文件内容fscanf(qp, %s %d %f, bobo.arr, (bobo.i), (bobo.f));printf(%s %d %f, bobo.arr, bobo.i, bobo.f);// 关闭文件fclose(qp);qp NULL;return 0;
}
七、二进制输出只针对于文件 prt指向的对象是 被掏空的对象stream指向的是要收获的对象
size 是输出元素的大小
count 是输出的个数
struct Peo
{char name[20];int age;float high;
};// fwrite 二进制写 wbint main()
{struct Peo s { lisi,20,180.5f };//打开文件FILE* ps fopen(test.txt, wb);//判断是否成功……// 写入fwrite(s, sizeof(struct Peo), 1, ps);//关闭文件fclose(ps);ps NULL;return 0;
}
八、二进制输入 参数和 fwrite函数 一样不过这次风水轮流转是从 stream指向的里面复制一份给ptr指向的地方
struct Peo
{char name[20];int age;float high;
};int main()
{struct Peo rp { 0 };//打开文件FILE* pp fopen(test.txt, rb);// 判断……// 读入数据fread(rp, sizeof(rp), 1, pp);printf(%s %d %f, rp.name, rp.age, rp.high);return 0;
} scanf 、printf 家族大比拼 scanf针对 标准输入 的格式化输入语句printf针对 标准输出 的格式化输出语句fscanf针对 所有输入流 的格式化输入语句fprintf针对 所有输出流 的格式化输出语句sscanf从一个字符串中转化出一个格式化的数据sprintf把一个格式化的数据转化为字符串 FILE* stdin标准输入流键盘FILE* stdout标准输出流屏幕FILE* stderr标准错误流屏幕
九、文件的随机读写
1、fseek 函数
根据 文件指针的偏移量和位置 来 定位文件指针 2、ftell 函数
计算偏移量以文件头作为参照
【什么是偏移量】就是相当于最开始的位置左移右移多少。 3、rewind 函数
回到文件头 //1、fseek 根据文件指针的偏移量和位置来定位文件指针
//2、ftell计算偏移量
//3、rewind 回到文件起始位置
int main()
{// 打开文件FILE* pc fopen(test.txt, r);// 判断if (pc NULL){perror(fopen);return 1;}// 文件内容ABCDEFGHIJKLMN// 偏移3从最开始fseek(pc,2, SEEK_SET);int ar fgetc(pc);printf(%c\n, ar);// 偏移2从现在的位置fseek(pc,2, SEEK_CUR);ar fgetc(pc);printf(%c\n, ar);// 偏移3从末尾开始fseek(pc, -6, SEEK_END);ar fgetc(pc);printf(%c\n, ar);// 计算偏移量printf(%d\n, ftell(pc));// 返回最初的位置rewind(pc);ar fgetc(pc);printf(%c\n, ar);// 关闭文件fclose(pc);pc NULL;return 0;
}
结果C F L 12 A
fgetc 函数的特点读取一个字符后往后走一步。
十、文件读取结束的判定
文件文本读取是否结束判断返回值
fgetc 判断是否为 EOF fgets判断是否为 NULLfread判断返回值是否 小于实际要读取的个数
feof 函数 ferror 函数
结束的原因 feof判断 是不是 到 末尾 ferror判断 是不是 遇到 错误 // feof ferrorint main()
{char arr[20] { 0 };// 打开文件 二进制读FILE* pc fopen(test.txt, rb);// 判断……//读取int nfread(arr, 1, 5, pc);if (n 5){// 不一定读取到末尾puts(读取成功\n);}else{// n! 5, 说明读取结束末尾或者发生错误if (feof(pc))printf(读到末尾\n);else if (ferror(pc))printf(发生错误读取失败\n);}// 关闭文件fclose(pc);pc NULL;return 0;
}
十一、文件缓冲区 如果想要赶快将数据送入文件里可以刷新缓冲区 【fflush 函数】
关闭文件fclose时也会刷新缓冲区。