文本
一、字符IO
1. getchar 、 putchar
int getchar(void)
int putchar(int ch)
从标准输入得到一个字符和从标准输出(显示器)显示一个字符
int c = getchar(); putchar(c);
1.2 getc 、putc (返回值和getchar一样,都是一个字符)
int getc(FILE * fp); //指明从哪里读取,指明流
int putc(int ch,FILE * fp); //指定到特定的流
int c = getc(stdin); putc(c, stdout);//实现了和getchat putchar 一样的功能
我们的putc可以指定特定的流,那么我们想让它显示到我们自己创的文本中:
FILE *fp = fopen("log.txt","wt"); //创建一个文本 if (fp == NULL) { perror("fopen"); return 1; } int i='A'; for (; i <= 'Z'; i++) //创建成功,则将其循环显示到我们的文本中 { putc(i, fp); } fclose(fp);
现在我们想要文本的内容显示到我们的显示器,那么就可以用getc
char c; do{ c = getc(fp); //得到文本内容 if (c == EOF) { break; } printf("%c", c); //不为空我们将其显示出来 } while (1);
二、未格式化的行I/O
不进行替换
2.gets 、puts
char * gets (char *str) //标准输入获得字符串
int puts (const char *str)
char buf[128]; gets(buf); puts(buf);2.1 fgets、fputs
char * fgets (char *str , int num , FILE * fp);
int fputs (const char * str,FILE * fp);
char buf[128]; fgets(buf, sizeof(buf)-1, stdin); fputs(buf, stdout);//和gets实现一样的功能
此时我们从标准输入得到字符串写到指定文本中:
char buf[128]; do{ char *ret = fgets(buf, sizeof(buf)-1, stdin); if (ret == NULL) { break; } fputs(buf, fp); } while (1);
三、格式化的行I/O
3. scanf 、printf (比较简单就不将所有的进行罗列)
int scanf (const char * format,..)
int printf (const char * format,..)
char buf[128]; scanf( "%s", buf); printf( "%s\n", buf);
scanf("%4s", str);//只能读取4个
3.1 fscanf、fprintf (默认从标准输入读)
int fscanf (FILE * fp,const char * format,...)
int fprintf(FILE * fp,const char * format,...)
char buf[128]; fscanf(stdin, "%s", buf); fprintf(stdout, "%s\n", buf); //实现了和scanf一样的功能
可以将其写人文本中
char buf[128]; fscanf(stdin, "%s", buf); fprintf(fp,"%s\n", buf);
有了这个我们就可以将任意形式的内容写到文本中,那么我们试试将每个人的信息都录入到文件中吧~
char name[128]; int age; int score; int i; for (i = 0; i < 3; i++) { printf("name:"); fscanf(stdin, "%s", name); printf("age:"); fscanf(stdin, "%d", &age); printf("name:"); fscanf(stdin, "%d", &score); fprintf(fp, "[name: %s] [age: %d] [score: %d] [NO:%d]\n",name,age,score,i); }
二进制IO
size_t fread (void * ptr , size_t size , size_t count , FILE * fp)
size_t fwrite (const void * ptr , size_t size , size_t count , FILE * fp)
参数说明:
1. 数据位置 (读到哪个缓冲区)
2. 基本单位
3. 几个基本单位 (size*count=共有多少字节)
4. 从哪里开始写(读)