Clibrary | 【04】c语言中的输入输出函数

前言

以下是<cstdio>对字符、字符串的输入输出。

1、fgetc

int fgetc ( FILE * stream );

/*
* @func:从流中获取字符;
* @param stream:指向标识输入流的FILE对象的指针;
* return:返回读取的字符(int);返回类型为INT为特殊值,以适应EOF,其指示故障:
*/

案例

void Demo_fgetc(){
	char ch;
	FILE * fp = fopen("test.txt", "r"); // 打开文件
	while ((ch=fgetc(fp)) != EOF)	// 逐个读取字符
	{
		printf("%c", ch);
	}
	fclose(fp);
}

2、fgets

char * fgets ( char * str, int num, FILE * stream );

/*
* @func:从流中获取字符串,遇到换行结束,且读入换行;
* @param str:指向标识输入流的FILE对象的指针;
* @param num:字符串个数,读取到num-1个;
* @param stream:指向标识输入流的FILE对象的指针;stdin可以用作从标准输入读取的参数;
* return:返回str,文件末尾返回EOF,错误返回NULL;
*/

案例

void Demo_fgets(){
	FILE *fp = fopen("test.txt", "r");
	char buf[1024] = { 0 };
	while (fgets(buf, 1024, fp) != NULL)
	{
		printf("%s", buf);
	}
	fclose(fp);
}

3、fputc

int fputc ( int character, FILE * stream );

/*
* @func:将字符写入流;
* @param character:写入时,该值在内部转换为unsigned char;
* @param stream:指向标识输出流的FILE对象的指针;
* return:成功返回写入字符,失败返回EOF;
*/

案例

void Demo_fputc(){
	char *arr = "I like ...";  
	FILE * fp = fopen("test.txt", "w"); // 以写的方式打开文件
	while (*arr != '\0')// 判断字串是否结束
	{
		fputc(*arr, fp);
		printf("%4c", *arr);
		arr++;
	}
	fclose(fp);
}

4、fputs

int fputs ( const char * str, FILE * stream );

/*
* @func:将字符串写入流,直到\0;
* @param str:包含要写入stream的内容的C 字符串;
* @param stream:指向标识输出流的FILE对象的指针;
* return:成功返回非负值,失败返回EOF;
*/

案例

void Demo_fputs(){
	// 创建二维数组
	char *arr[2] = {
		"test one\n",
		"test two"
	};
	FILE * fp = fopen("test.txt", "w"); // 以写入的方式打开文件

	for (int i = 0; i < 2; ++i){
		fputs(arr[i], fp);		// 将字符串写入文件
		printf("%s", arr[i]);
	}
	fclose(fp);
}

5、getchar

int getchar ( void );

/*
* @func:从标准输入获取字符;
* return:成功返回读取的字符,失败返回EOF;
*/

案例

void Demo_getchar(){
	char ch;

	while ((ch = getchar()) != '#') // 输入字符,#号键结束
	{
		/*
			由于getchar会读入\n,故将\n过滤
		*/
		if (ch == '\n')
			continue;
		printf("%c\n", ch);
	}
}

6、gets 注:C11已弃用

char * gets ( char * str );

/*
* @func:从标准输入获取字符串,直到换行符或者到文件结尾,不会添加换行符,自动添加\0;
* @param str:指向内存块(字符数组)的指针,其中读取的字符串被复制为C 字符串;
* return:成功返回读取的字符,失败返回EOF;
*/

案例

void Demo_gets(){
	char buf[1024];
	printf("请输入字符串:");
	gets(buf);

	printf("%s\n", buf);
}

7、putc

int putc ( int character, FILE * stream );

/*
* @func:写入一个字符到流和前进位置指示器;
* @param character:int类型,在内部换转化成无符号字符型;
* @param stream:指向标识输出流的FILE对象的指针;
* return:成功返回写入字符,失败返回EOF;
*/

案例

	char c;

	FILE *fp= fopen("test.txt", "w");
	for (c = 'A'; c <= 'C'; c++) {
		putc(c, fp);
	}
	fclose(fp);

8、putchar

int putchar ( int character );

/*
* @func:将字符写入标准输出;
* @param character:值在内部转换为无符号字符;
* @param stream:指向标识输出流的FILE对象的指针;
* return:成功返回写入字符,失败返回EOF;
*/

案例

void Demo_putchar(){
	char ch;
	for (ch = 'A'; ch <= 'C'; ch++) {
		putchar(ch);
	}
}

9、puts

int puts ( const char * str );

/*
* @func:将字符串写入标准输出;
* @param str :要打印的字符串;
* return:成功返回非负值,失败返回EOF;
*/

案例

void Demo_puts(){
	char *arr = "test puts";
	puts(arr);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jxiepc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值