第9章 输入输出(过程式)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FILE *fp=fopen("d:\\data\\file1.txt","w"); if (fp == NULL) { printf("文件打开失败\n");
exit(-1); }
往文件中写入数据
• 输出一个字符,输出成功时返回输出的字符
int fputc(int c, FILE *stream );
文件内部指针定位:
int fseek(FILE *stream,long offset,int origin); • origin指出参考位置,它可以是
SEEK_CUR(当前位置), SEEK_END(文件末尾) SEEK_SET(文件头);
• offset为相对origin移动的字节数(偏移量),它 可以为正值(向后移动)或负值(向前移动)。
第十章 输入/输出 --过程式实现
控制台输出
把ch中的字符输出到标准输出设备,函数返回输出的 字符
• int putchar(int ch);
把p所指向的字符串输出到标准输出设备,操作成功 时函数返回一个非负整数
• int puts(const char *p);
提供对基本类型数据的输出操作,操作成功时返回输 出的字符个数
以文本方式打开的文件,在Windows环境中输入时, 会把'\r'和'\n'两个字符转换成'\n'一个字符。
对文件打开操作的成功与否进行判断
FILE *fp=fopen("d:\\data\\file1.txt","r"); if (fp == NULL) { printf("文件打开失败\n");
以上操作都会在s中放上'\0'
文件输出
打开文件
FILE *fopen(const char *filename, const char *mode);
• filename是要打开的外部文件名(包括路径); • mode表示打开方式,它可以是:
"w":打开一个外部文件用于写操作。如果外部文件已 存在,则首先把它的内容清除;否则,先创建该外部文 件。
printf输出格式控制
参见教材<表10-1> 在调用函数printf时,编译程序将对实参的
类型进行:
• 整型提升转换 • 把float型转成double型
控制台输入
从键盘输入一个字符作为返回值
• int getchar();
从键盘输入一个字符串放入p所指向的内存空间, 成功时返回p,否则,返回NULL
int fscanf( FILE *stream, const char *format [, argument ]...);
• 按字节(二进制方式)输入一批数据。
size_t fread(const void *buffer, size_t size,size_t count, FILE *stream);
关闭文件
• fclose(FILE *stream);
文件输入/输出
打开一个既能读入数据、也能输出数据的文件
• FILE *fopen( const char *filename, const char *mode );
• mode可以是: "r+":打开一个外部文件用于读/写操作。文件必须 存在。 "w+":打开一个外部文件用于读/写操作。如果文 件不存在,则首先创建一个空文件,否则,首先清 空已有文件中的内容。 "a+":打开一个外部文件用于读/添加操作。如果 文件不存在,则首先创建一个空文件。以这种方式 打开的文件,输出操作总是在文件尾进行。
文件输入
打开文件
FILE *fp=fopen(const char *filename, const char mode);
• filename是要打开的外部文件名; • mode是打开方式,它可以是:
"r",表示打开一个外部文件用于读操作,这时,外部 文件必须存在,否则打开文件失败。
在r的后面还可以加上t或b,指出是以文本或二进制 方式打开文件,默认打开方式为文本方式。
• int printf(const char *format [,<参数表>]);
printf:
int i=1; double j=123.4; printf("i=%d, j=%f\n",i,j); 结果为: i=1, j=123.400000
cout的优势:
cout << "i=" << i << ",j=" << j << endl;
“a”:打开一个外部文件用于添加(从文件末尾)操作。 如果外部文件不存在,则先创建该外部文件。
在打开方式w或a的后面还可以加上t或b,指出以文本 或二进制方式打开文件。默认打开方式为文本方式。
以文本方式打开的文件,在Windows环境中输出时, 会把'\n'转换成'\r'和'\n'两个字符。
对文件打开操作的成功与否进行判断:
• 按字节(二进制方式)输出一批数据(数组)。 size_t fwrite(const void *buffer, size_t size, size_t count, FILE *stream); 参数size为字节块的尺寸;count为字节块的个数;返 回实际输出的字节块的个数
关闭文件
• fclose(FILE *stream );
• 输出一个字符串,输出成功时返回一个非负整数
int fputs(const char *string, FILE *stream );
• 输出基本类型数据,返回输出的字符数
int fprintf(FILE *stream, const char *format [, argument ]...);
int sscanf(const char *buffer, const char *format [,argument ] ... );
获取文件内部指针位置:
long ftell( FILE *stream ); //返回位置指针的位 置
面向字符串变量的I/O
输出数据保存到某个字符串变量中:
int sprintf(char *buffer, const char *format [,argument] ... );
从某个字符串变量中获得数据:
参数size为字节块的尺寸;count为字节块的个数。返回值表示 读入的字节块的个数
注意:从文件输入必须要知道文件中数据 的存储格式!
输入时,有时需要判断文件是否结束
• int feof(FILE *stream); • 当位置指针指向文件末尾,再进行输入时,则
该函数返回非零0,表示文件结束;否则返回0, 表示文件未结束。
• char *gets(char *p);
对基本类型的数据进行输入,返回实际输入并保存 的数据个数
• int scanf(const char *format [,<参数表>]);
scanf: int i; double j; scanf("i=%d,j=%lf",&i,&j); 输入可以为: i=10,j=123.4
cin的优势: cout << "i="; cin >> i; cout << ",j="; cin >> j;
scanf输入格式控制
与printf基本相同(参见教材<表10-1>) 在识别某个指定类型的数据时,识别过程遇
到下面的情况结束:
• 格式中指定的字符 • 空白符 • 不属于指定类型数据的字符
字符串输入
scanf: char s[10]; scanf("%s",s); //输入字符串放入s(不安全!) scanf("%9s",s); //输入前9个字符 scanf("%9[a-zA-Z0-9凵]",s); //直到输入了9个字符或
//遇到可包含字符以外的字符
cin: cin >> s; //输入字符串放入s(不安全!) cin >> setw(10) >> s; //输入前9个字符 cin.getline(s, 10,’\n’); //直到输入了9个字符或遇到'\n'
exit(-1); }
从文件中读出数据
• 输入一LE *stream );
• 输入一个字符串,函数正常结束时返回string的值,否 则返回NULL
char *fgets(char *string, int n, FILE *stream );
• 输入基本类型的数据,返回值表示读入并存储的数据个 数
相关文档
最新文档