输入、输出函数

文本

一、字符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. 从哪里开始写(读)


猜你喜欢

转载自blog.csdn.net/z_juan1/article/details/80567890