***其他输入输出函数***
首先,C语言输入输出的对象,主要就是标准输出流(stdout)与标准输入流(stdin)。所谓标准输出流通俗地说就是屏幕输出,标准输入流就是键盘输入。除了这两种之外,C语言还可以对磁盘文件和外部设备输入输出。
磁盘输入输出函数
类似于标准输入输出函数,文件输入输出函数包括:
a)单个字符输入输出函数:fgetchar与fputchar(或者getc与putc);
b)单行字符串输入输出函数:fgets与fputs;
c)格式化输入输出函数:fscanf与fprintf;
[例3-12]测试文件输出功能 #include <stdio.h> int main( ) { char s[80]; FILE* pf = fopen("./1.txt", "w"); puts("请输入一行文字:"); //fputs("请输入一行文字:", stdout); scanf("%s", s); //fgets(s, sizeof(s), stdin); fputs(s, pf); fclose(pf); return 0; } |
将以上代码输入到C语言编译器中进行编译、运行并查看打印结果:
a)运行之后根据提示输入一行文字后回车,查看执行文件或者工程目录下是否生成了一个“1.txt”文件;
b)用记事本或其他文本工具打“1.txt”文件,观察fputs和fclose哪个函数执行之后文件的内容发生变化;
c)使用注释中的fputs替换puts函数,使用fgets替换scanf函数,思考两种函数的等价关系。
[例3-13]测试文件输入功能 #include <stdio.h> int main() { int c; FILE* pf = fopen("./1.txt", "r"); if (!pf) { puts("打开文件失败!"); return -1; } while (1) { c = getc(pf); if (c == -1) break; if (c == '\r') continue; putchar(c); //putc(c,stdout); } fclose(pf); return 0; } //linux文本文件的换行符是:\n //windows文本文件的换行符是:\r\n |
将以上代码输入到C语言编译器中进行编译、运行并查看打印结果:
a)运行之前先要拷贝一个1.txt文件(含有多行文字内容),到执行文件所在目录下或者工程目录下;
b)运行之后观察程序输出内容,与原文本文件中的内容是否完全一致;
c)使用注释中的fputc替换putchar函数,思考两种函数的等价关系。
d)最好能在调试模式下单步执行,在监视器内观察getc函数执行后变量的变化,尤其是含有中文的文件。
...........................................................................................................................................................
总结:本节对磁盘文件的读写只做初步认识,更多磁盘文件操作编程,参见后续章节“C语言文件”。在C语言中,把标准输出流定义为一个文件指针stdout,把标准输入流也定义为一个文件指针stdin。因此,就产生了以下的文件输入输出函数的一些等价关系:
a)单个字符输入输出函数:
getchar()与fgetchar(stdin)以及getc(stdin)三者是等价的;
putchar(c)与fputchar(c, stdout)以及putc(c,stdout)三者是等价的;
b)单行字符串输入