C中fgetc()和fputc简单用法介绍

功能:

->fgetc :从流中读取字符
->fputc:把字符写入指定文件中

格式:


int fgetc(FILE *stream)
注:这个函数的返回值,是返回读取的一个字节,如果读到了文件末尾或者读取文件失败时会返回EOF
int fputc(int c,FILE *stream)
注:这个函数的返回值,返回的时写入问价的字符的ASCII码值,出错是,返回EOF(-1),当正确写入一个字符或一个字节的数据后,文件内部指针将会自动的往后移一个字节的位置。

代码示例:

#include<stdio.h>
#include<stdlib.h>
int main(int argc,const char *argv[])
{
    FILE *fp = NULL;//声明一个标示文件的指针

    char ch;

    fp = fopen("/user/qingyun/desktop/demo.txt","w");
    //以可写方式打开一个txt文件

    if(NULL == fp)
    //判断文件是否正常打开,如果没有正常打开,那么退出我们的程序
    {
        printf("input error");
        exit(1);//非正常退出
    }
    ch = fgetc(stdin);//设置标准话输入
    while(ch != EOF)
    {
        fputc(ch,fp);//将数据写入fp文件中
        ch = fgetc(stdin);//指向下一个要接收的字符或字节
   }
    fclose(fp);//关闭fp文件
    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].
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值