56_fputc()和fgetc()

本文介绍了一个简单的C程序实例,演示如何利用fputc()函数将转换为大写的字符写入文件,并通过fgetc()函数从文件读取字符。程序首先提示用户输入一个以‘.’结尾的字符串,然后将字符串中的小写字母转换为大写并保存到文件中,最后再从文件中读取这些字符并展示出来。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//_56_fputc()和fgetc()
//_56_main.cpp

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main()
{
	FILE *fp;//文件指针变量
	char str[100];
	fp=fopen("file.txt","w");//!!!!!!!!!!是w不是r了记得
	if(fp==NULL)
	{
		printf("无法打开文件.\n");
		exit(0);
	}
	printf("请输入一个字符串(以“.”结尾):\n");
	gets(str);
	printf("%s\n",str);
	//将字符串中的小写字符转换成大写字符,直到遇到“.”为止
	for(int i=0;str[i]!='.';i++)
	{
		if(str[i]>='a'&&str[i]<='z')
			str[i] = toupper(str[i]);
		fputc(str[i],fp);//将转换后的字符存入文件
	}
	fclose(fp);
	fp=fopen("file.txt","r");
	for(int i=0;str[i]!='.';i++)
		str[i] = fgetc(fp);//将文件中的字符回传到str中去
	fclose(fp);
	printf("%s\n",str);

	system("pause");
	return 0;
}

### C语言 `fgetc` `fput` 函数的使用说明及区别 #### 一、函数定义与功能描述 在C语言中,`fgetc()` `fputc()` 是用于处理文件输入/输出的核心函数之一。它们主要用于以字符形式读写文件。 - **`fgetc()`**: 这是一个从指定文件流中逐个读取字符的函数。当到达文件末尾时返回EOF[^1]。 - **`fputc()`**: 这是一个向指定文件流中逐个写入字符的函数。如果操作成功,则返回所写的字符;否则返回EOF[^2]。 #### 二、函数原型 以下是这两个函数的标准声明: ```c int fgetc(FILE *stream); int fputc(int char, FILE *stream); ``` - 对于`fgetc()`而言,参数`FILE *stream`表示要从中读取数据的文件指针。 - 而对于`fputc()`来说,第一个参数是要写入的具体字符(作为整数传递),第二个参数则是目标文件的指针[^3]。 #### 三、实际应用案例分析 下面通过具体例子来展示如何运用上述两个函数完成基本的任务——即从现有文本文件里提取内容并打印到屏幕上以及创建新文件并将特定消息存储进去的过程。 ##### 示例程序:利用`fgetc()`读取整个文件的内容至控制台显示出来 ```c #include <stdio.h> int main(){ //尝试打开名为"example.txt"只读模式下的文件 FILE* filePointer = fopen("example.txt","r"); if(filePointer==NULL){ printf("Error! Could not open the specified file.\n"); return -1; } int character=0; while((character=fgetc(filePointer)) != EOF ){ putchar(character); } fclose(filePointer); return 0; } ``` 此段代码展示了怎样借助循环结构配合调用`fgetc()`方法逐一获取直至遇到结束标志位为止的所有单个字母,并即时呈现在标准输出设备上。 ##### 另外一个实例:采用`fputc()`把字符串保存成新的文档 ```c #include<stdio.h> #define MAX_LEN 50 void saveStringToFile(char str[]){ FILE *fp=fopen("outputFile.txt","w+"); if(fp!=NULL){ for(int i=0;i<strlen(str);i++) { fputc(str[i], fp); } puts("\nThe string has been successfully written into outputFile.txt."); fclose(fp); }else{ perror("Failed to create/open "); } } int main(){ char inputStr[MAX_LEN]; printf("Enter any sentence:"); gets(inputStr); saveStringToFile(inputStr); return 0; } ``` 这里我们编写了一个简单的辅助函数saveStringToFile(), 它接受用户键入的一句话作为参数并通过for迭代器联合起来多次执行单一字符级别的记录动作最终形成完整的句子存档. #### 四、主要差异对比表 | 特性 | `fgetc()` | `fputc()` | |-----------------|------------------------------------|-----------------------------------| | 功能 | 从给定文件中读取下一个可用字符 | 向指定位置追加单独的一个ASCII码对应的图形表现形式 | | 返回值类型 | 整型数值 | 成功则反馈该被放置元素本身;失败给出错误指示信号(-1) | | 参数数量&含义 | 单参:指向源资料集合的对象实体地址 | 双参:前者为目标符号编码值后者关联目的容器链接标识符 | 综上所述,虽然两者都围绕着基于单位级别上的信息交换展开讨论,但是方向完全相反,一个是抽取外部资源内部化呈现过程中的桥梁纽带角色扮演者身份体现得淋漓尽致;另一个更多时候承担起构建持久化储存解决方案过程中不可或缺的重要组成部分使命担当形象塑造得栩栩如生[^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值