1 文件的顺序读写
1.1字符输出函数(fputc)&&字符输入函数(fgetc)
int fputc( int c, FILE *stream );
写入一个字符:
int main() { FILE* pf = fopen("text.txt", "w"); if (pf == NULL) { printf("%s\n", strerror(errno)); return 0; } else//写入文件 { fputc('b', pf); fputc('i', pf); fputc('t', pf); } fclose(pf); pf = NULL; return 0; }
其中打开文件用了fopen函数,关闭文件用了fclose函数.刚开始文件中并没有text.txt文件,由于fopen函数中第二个参数为"w"(具体可以看后面补充的图),所以它会自动建立了一个新文件,并用fputc函数将字符'b' 'i' 't'写入到了该文件夹中。
双击打开后里面存放的是bit
该函数的作用是一次将一个字符写入到新建立的文件夹中。
补充图:
读取一个字符:
int fgetc( FILE *stream );
int main() { FILE* pf = fopen("text.txt", "r"); if (pf == NULL) { printf("%s\n", strerror(errno)); return 0; } else//读取文件 { printf("%c", fgetc(pf)); printf("%c", fgetc(pf)); printf("%c", fgetc(pf)); } fclose(pf); ps = NULL; return 0; }
由于刚才建立了文件夹text.txt,所以一个fgetc函数会将文件夹中一个字符读取出来:
在这儿我们还得了解一些常识:
- 从键盘输入&&输出到屏幕中键盘&&屏幕都是外部设备。
- 键盘是标准输入设备,屏幕是标准输出设备。
- 任何c程序,在默认编译好之后,运行时都会打开3个输入输出流:stdin(标准输入) stdout(标准输出) stderr(标准错误)
所以我们可以用fgetc&&fputc在键盘上输入信息以及在屏幕上打印信息:
1.2文本行输出函数(fputs)&&文本行输入函数(fgets)
写入一行字符:
int fputs( const char *string, FILE *stream );
int main() { FILE* pf = fopen("text.txt", "w"); if (pf == NULL) { printf("%s\n", strerror(errno)); return 0; } //写入文件 fputs("hello\n", pf); fputs("world", pf); fclose(pf); pf = NULL; return 0; }
与fputc函数不同的是,该函数一次能写入一个字符串的数据到新建立的文件夹中:
读取一行字符:
char *fgets( char *string, int n, FILE *stream );
int main() { FILE* pf = fopen("text.txt", "r"); char buf[100]={0}; if (pf == NULL) { printf("%s\n", strerror(errno)); return 0; } //读取文件 fgets(buf, 100, pf); puts(buf); fgets(buf, 100, pf); puts(buf); fclose(pf); pf = NULL; return 0; }
这里定义了一个buf数组,将pf指向文件中的字符串拷贝到buf数组中:
用stdin&&stdout来从键盘上输入一行字符以及从屏幕上打印一行字符:
int main() { char buf[100] = { 0 }; fgets(buf, 100, stdin); fputs(buf, stdout); //gets(buf); //puts(buf); return 0;
上述fgets和fputs与gets和puts效果差不多。