尽管很多人在学C++,但是无论实在多路IO复用服务器还是在QT、嵌入式开发中,C语言凭借其多元化输入输出,及相对C++编译后更小这一优势,仍需要我们进行学习:
为了避免重复定义,先定义文件的基础操作:
#include <stdio>
int main()
{
File * file;
file.open("C://input.txt",'w+');
char a[20];
char b[20];
}
- 1.字符输入输出函数 fgetc / fputc
b[0] = fgetc(file); //从file中读取一个字符
fputc(a[0],file); //将数组a中第一个字符放于文件中
- 2.字符串输入输出函数 fgets / fputs
fputs("输出到右侧", file);
fgets(a,5,file); //从文件读取5个字符到a中。
- 3.格式化输入输出函数 fprintf / fscanf(重点->常用)
fprintf(file,"%c",a); //将a中第一个字符以"%c"的格式打印到文件中
fprintf(stdout,"%c",a) //将a中第一个字符以"%c"的格式打印到标准输出流
fscanf(file,"%c",a) //将文件中文件指针当前指着的一个字符放入a中
fscanf(stdin,"%c",a) //将文件中文件指针当前指着的一个字符传到标准输出流
- 4 二进制输入输出流fread / fwrite
fwrite(a,sizeof(a),1,file); //将a中内容 1块sizeof(a)大小 数据写入file
fread(a,sizeof(a),1,file); //从file中读取 1块sizeof(a)大小 数据写入file
C++ 文件传输相对有些区别,基本文件如下:
#include <iostream>
#include <fstream>
int main()
{
using namespace std;
ifstream if;
ofstream of;
if.open("C://fileoperator.txt",ios::in);
of.open("C://fileoperator.txt",ios::out);
char a;
char b;
}
- 1.字符输入输出流 get/put
a = if.get(); //从文件中得到一个字符
of.put(a); //将写入往文件中
- 2.行输入输出流 getline
if.getline(a,sizeof(a)); //将文件内容输出到a中
- 3.二进制输入输出流 read / write
of.write(a,sizeof(a));
of.read(a,sizeof(a));
C语言mem系列使用
memset(str,0,10); //将str前10个字符设为0
memcpy(str1,str2,10); //将str2中前10个字符复制到str1中
memmove(str1,str2,10); //将str2中前10个字符移动到str1中,保证正确性,效率相对低
memcmp(str1,str2,10)