专业做衬衫哪个网站,引流推广平台有哪些,珠海网站建设案例,怀远做网站电话c语言中的IO操作
标准类型的输入输出:
输入------数据来源是通过键盘进行输入输出------程序中的数据输出到控制台
c语言中: scanf:输入 printf:输出 两个函数的相同点 1 —格式串 2 —不定参数 两个函数的缺陷 1 —用户要提供数据的格式—用户要记忆大量的格式串—…c语言中的IO操作
标准类型的输入输出:
输入------数据来源是通过键盘进行输入输出------程序中的数据输出到控制台
c语言中: scanf:输入 printf:输出 两个函数的相同点 1 —格式串 2 —不定参数 两个函数的缺陷 1 —用户要提供数据的格式—用户要记忆大量的格式串—而且容易出错 2 —两个函数参数检测不严格 getchar() putchar() gets() puts()
文件类型的输入和输出
输出:数据从 文件中读取输出:将程序中的数据输出到文件中 对输入输出缓冲区的理解 1.可以屏蔽掉低级I/O的实现低级I/O的实现依赖操作系统本身内核的实现所以如果能够屏蔽这部分的差异可以很容易写出可移植的程序。 2.可以使用这部分的内容实现“行”读取的行为对于计算机而言是没有“行”这个概念有了这部分就可以定义“行”的概念然后解析缓冲区的内容返回一个“行”。
CIO流 cerr和clog标准错误输出流输出设备是显示器在流类库中最重要的两部分功能为标准输入/输出 standard input/output和文件处理。在C的流类库中定义了四个全局流对象cincoutcerr和 clog cin标准输入流对象键盘为其对应的标准设备cout标准输出流对象显示器为标准设备。 在新库中要使用这四个功能必须包含文件并引入std标准命名空间
为什么c中cout和cin不需要格式串? 因为把所有的内置类型都进行了输出运算符的重载
注意
cin为缓冲流。键盘输入的数据保存在缓冲区中当要提取时是从缓冲区中拿。如果一次输入过多会留在那儿慢慢用如果输入错了必须在回车之前修改如果回车键按下就无法挽回了。只有把输入缓冲区中的数据取完后才要求输入新的数据。不可能用刷新来清除缓冲区所以不能输错也不能多输输入的数据类型必须与要提取的数据类型一致否则出错。出错只是在流的状态字state中对应位置位置程序继续。空格和回车都可以作为数据之间的分格符所以多个数据可以在一行输入也可以分行输入。但如果是字符型和字符串则空格ASCII码为32无法用cin输入字符串中也不能有空格。回车符也无法读入。
c语言中文件操作
文件分类
文本格式文件二进制格式文件
按照文本方式写: fwrite—(buf单个元素的字节总共多少个元素文件指针)
int a 12345678;
int b atoi(str);//字符串转整型
char sz[32] {0);
//整型转字符型
itoa(a,sz,10);//1.转换哪个变量 2.用谁来接收 3.转换成什么进制
//sz[]---12345678\0
//按二进制格式写入
fwrite(a,sizeof(a),1,pf);//1.写入变量2.多大3.写几个4.朝哪个文件写
fwrite(sz,1,strlen(sz),pf);//按文本方式写常用文件操作的函数
fopen(“文件路径”,“文件的格式”)—操作文件的格式
r 打开只读文件该文件必须存在。
r 打开可读写的文件该文件必须存在。
rb 打开一个二进制文件只读。
rb 以读/写方式打开一个二进制文件。
w 打开只写文件若文件存在则文件长度清为0即该文件内容会消失。若文件不存在则建立该文件。
w 打开可读写文件若文件存在则文件长度清为零即该文件内容会消失。若文件不存在则建立该文件。
wb 打开一个二进制文件只写。
wb 以读/写方式建立一个新的二进制文件。
a 以附加的方式打开只写文件。若文件不存在则会建立该文件如果文件存在写入的数据会被加到文件尾即文件原先的内容会被保留。
a 以附加方式打开可读写的文件。若文件不存在则会建立该文件如果文件存在写入的数据会被加到文件尾后即文件原先的内容会被保留。
ab 打开一个二进制文件进行追加 。
ab 以读/写方式打开一个二进制文件进行追加 。fclose()fread()fwrite()fgetc()fputc()fgets()fputs()
更多详情请参考这里
如何检测一个文件是否读到结尾
检测文本文件格式可以二进制文件不行 EOF是文件的结尾标记在 一个字节里保存了-1文件里的数据-1按照两个字节来进行存储一个是符号一个是1。
while (EOF ! (chfgetc()) )c中的文件操作
定义一个文件流对象 ifstream ifile(只输入用)ofstream ofile(只输出用)fstream iofile(既输入又输出用) 使用文件流对象的成员函数打开一个磁盘文件使得文件流对象和磁盘文件之间建立联系使用提取和插入运算符对文件进行读写操作或使用成员函数进行读写关闭文件
#includefstream
// 使用文件IO流用文本及二进制方式演示读写配置文件
struct ServerInfo
{char _ip[32]; // ipint _port; // 端口
};struct ConfigManager
{
public:ConfigManager(const char* configfile bitserver.config):_configfile(configfile){}void WriteBin(const ServerInfo info){// 这里注意使用二进制方式打开写ofstream ofs(_configfile, ifstream::out | ifstream::binary);ofs.write((const char*)info, sizeof(ServerInfo));ofs.close();}void ReadBin(ServerInfo info){// 这里注意使用二进制方式打开读ifstream ifs(_configfile, ifstream::in | ifstream::binary);ifs.read((char*)info, sizeof(ServerInfo));ifs.close();}void WriteText(const ServerInfo info){// 这里会发现IO流写整形比C语言那套就简单多了// C 语言得先把整形itoa再写ofstream ofs(_configfile);ofs info._ip endl;ofs info._port endl;ofs.close();}void ReadText(ServerInfo info){// 这里会发现IO流读整形比C语言那套就简单多了// C 语言得先读字符串再atoiifstream ifs(_configfile);ifs info._ip;ifs info._port;ifs.close();}
private:string _configfile; // 配置文件
};int main()
{ConfigManager cfgMgr;ServerInfo wtinfo;ServerInfo rdinfo;strcpy(wtinfo._ip, 127.0.0.1);wtinfo._port 80;// 二进制读写cfgMgr.WriteBin(wtinfo);cfgMgr.ReadBin(rdinfo);cout rdinfo._ip endl;cout rdinfo._port endl;// 文本读写cfgMgr.WriteText(wtinfo);cfgMgr.ReadText(rdinfo);cout rdinfo._ip endl;cout rdinfo._port endl;return 0;
}