C语言学习(8)—— 输入输出

 文件在程序中是以流的形式来操作的:(1)输入流:数据从数据源(文件)到程序(内存)的路径;(2)输出流:数据从程序(内存)到数据源(文件)的路径

一、屏幕输入输出

1. getchar() 和 putchar()

int getchar(void):从屏幕读取一个字符,并把它返回为一个整数,这个函数在同一个时间内只会读取一个单一的字符。在循环内使用这个方法,可以从屏幕上读取多个字符。

int putchar(int c):把一个字符输出到屏幕上,并返回相同的字符。这个函数在同一个时间内只会输出一个单一的字符。在循环内使用这个方法,可以在屏幕上输出多个字符。

#include<stdio.h>    int main(){int c;printf("输入字符: ");  c = getchar();        // 输入字符: 2printf("输入的字符是: ");putchar(c);          //  输入的字符是: 2return 0;
}

2. gets() 和 puts()

char *gets(char *s):从屏幕读取一行到 s 所指向的缓冲区,直到该行结束。
int puts(const char *s):把字符串s和一个尾随的换行符输出到屏幕。

#include<stdio.h>    int main(){char str[100];printf("输入字符串: ");  gets(str);               // 输入字符串: helloprintf("输入的字符串是: ");puts(str);              // 输入的字符串是: helloreturn 0;
}

3. scanf() 和 printf()

int scanf(const char *format, ...) :从标准输入流 键盘上 读取输入,并根据提供的 format 来处理输入。
int printf(const char *format, ...) :把输出写入到标准输出流 屏幕上,并根据提供的format处理输出format :可以是一个简单的常量字符串,分别指定 %s、%d、%c、%f 等来输出或读取字符串、整数、字符或浮点数。

#include<stdio.h>    int main(){char str[100];int i;printf("输入内容: ");  scanf("%s %d", str, &i);    // 输入内容: hello 2printf("str = %s, i = %d", str, i);   // str = hello, i = 2return 0;
}

二、文件输入输出

1、文件打开和关闭 

(1)fopen():创建一个新的文件或者打开一个已有的文件,这个调用会初始化类型 FILE的一个对象,类型FILE包含了所有用来控制流的必要的信息。

FILE *fopen(const char *filename, const char *mode); 

说明:filename是字符串,用来命名文件,访问模式 mode 的值可以是 "r"、"w"、"a"、"r+"、"w+"、"a+",如果处理的是二进制文件(图片视频)则需使用以下访问模式 "rb"、"wb"、"ab"、"rb+"、"wb+"、"ab+"

r打开一个已有的文件,允许读取文件。如果文件不存在,不会创建一个新文件。
w打开一个文件,允许写入文件。如果文件不存在,则会创建一个新文件。程序会从文件的开头写入内容,如果文件已经存在,则会将原内容覆盖。
a打开一个文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。程序会在已有的文件内容后面追加新的内容。
r+打开一个已有的文件,允许读写文件。如果文件不存在,不会创建一个新文件。
w+打开一个文件,允许读写文件。如果文件不存在,则会创建一个新文件。程序会从文件的开头写入内容,如果文件已经存在,则会将原内容覆盖。
a+打开一个文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。程序在读文件时从文件开头开始读取,程序在写文件时会在已有的文件内容后面追加新的内容,

(2)fclose(): 关闭文件,读写完文件之后一定要关闭

int fclose( FILE *fp );

说明:如果成功关闭文件,fclose()函数返回 0,如果关闭文件时发生错误,函数返回 EOF,这个函数实际上会清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。

2、文件读写

(1)写文件 

int fputc(int c, FILE *fp);

说明:函数 fputc() 把参数 c 的字符值写入到 fp 所指的输出流中。如果写入成功,它会返回写入的字符,如果发生错误,则会返回 EOF。

int fputs(const char *s, FILE *fp);

说明:函数 fputs()把字符串 s 写入到 fp 所指的输出流中。如果写入成功,它会返回一个非负值,如果发生错误,则会返回 EOF。

int fprintf(FILE *fp, const char *format,...)

说明:函数 fprintf() 把字符串 s 写入到 fp 所指的输出流中。

#include<stdio.h>    int main(){// 创建文件指针FILE *fp = NULL;// 打开文件fp = fopen("file.txt", "w+");// 将内容写入文件(两种方式都可以)fputs("hello ", fp); fprintf(fp, "world");// 关闭文件fclose(fp);fp = fopen("file.txt", "w+");    // w+会覆盖原内容fprintf(fp, "你好");             // 此时文件中只有:你好fclose(fp);return 0;
}

 (2)读文件 

int fgetc( FILE *fp );

说明:函数 fgetc() 从fp 所指向的文件中读取一个字符。返回值是读取的字符,如果发生错误则返回 EOF。

char *fgets( char *buf, int n, FILE *fp );
说明:函数 fgets() 从 fp 所指的输入流中读取 n-1个字符。它会把读取的字符串复制到缓冲区 buf中,并在最后追加一个 null 字符来终止字符串。如果这个函数在读取最后一个字符之前就遇到一个换行符\n或文件的末尾 EOF则只会返回读取到的字符,包括换行符。

int fscanf(FILE *fp, const char *format,...)

说明:函数 fscanf() 从 fp 所指的文件中读取字符串,但是在遇到第一个空格字符时,它会停止读取。

#include<stdio.h>    int main(){// 创建文件指针FILE *fp = NULL;// 定义一个缓冲区char buff[1024];// 打开文件fp = fopen("file.txt", "r");        // 文件内容为: hello world1//            hello world2                   // 读取文件内容(方式一)fscanf(fp, "%s", buff);printf("%s \n", buff);              // hello// 关闭文件fclose(fp);// 读取文件内容(方式二)fp = fopen("file.txt", "r");fgets(buff, 1024, fp);printf("%s", buff);            // hello world1fclose(fp);// 读取整个文件的内容fp = fopen("file.txt", "r");while(fgets(buff, 1024, fp) != NULL){   // 通过while循环可以一行一行读取整个文件printf("%s", buff);}fclose(fp);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/679602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MOMENTUM: 1

攻击机 192.168.223.128 目标机 192.168.223.146 主机发现 nmap -sP 192.168.223.0/24 端口扫描 nmap -sV -p- -A 192.168.223.146 开启了22 80端口 看一下web界面 随便打开看看 发现这里有个参数id&#xff0c;sql尝试无果&#xff0c;发现写入什么&#xff0c;网页显示…

kali 开启ssh

vi /etc/ssh/sshd_config PermitRootLogin yes PasswordAuthentication yes 保存退出 service ssh restart ss -tunlp Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process tcp LISTEN …

C#,21根火柴棍问题(21 Matchticks Problem)的算法与源代码

一、21根火柴棍问题&#xff08;21 Matchticks Problem&#xff09; 21根火柴棍问题是西方经典游戏之一。 给定21根火柴&#xff0c;2个人A和B&#xff08;比如&#xff1a;分别是计算机和用户&#xff09;。 每个人一次可以挑选 1-- 4 根火柴。 被迫挑最后一根火柴的人输了…

51单片机 发送信息到电脑 com3口

51单片机 发送信息到电脑 com3口 import serial# 打开串行端口 ser serial.Serial(COM3, 9600) # 9600为波特率&#xff0c;根据实际情况进行调整 flag True try:while True:if ser.in_waiting > 0: # 如果串口有数据可读data ser.read() # 读取一行数据并解码为字符串…

第76讲安全退出实现

安全退出实现 VueX 是一个专门为 Vue.js 应用设计的状态管理构架&#xff0c;统一管理和维护各个vue组件的可变化状态(你可以理解成 vue 组件里的某些 data )。 Vuex有五个核心概念&#xff1a; state, getters, mutations, actions, modules。 state&#xff1a;vuex的基本数…

【回溯】37. 解数独

37. 解数独 解题思路 通过solveSudoku方法开始求解数独问题&#xff0c;然后调用backtrack方法进行递归回溯搜索。backtrack方法通过两个参数i和j来确定当前搜索的位置。 在backtrack方法中&#xff0c;首先检查当前位置是否超出了数独的边界&#xff0c;若超出&#xff0c;则…

【Java】内置锁是什么?

内置锁&#xff08;也称为监视器锁或互斥锁&#xff09;是Java语言提供的一种基本的线程同步机制。在Java中&#xff0c;每个对象都自动持有一个内置的锁&#xff0c;这个锁也被称为对象的监视器锁&#xff08;monitor lock&#xff09;。当你使用synchronized关键字来同步一个…

arduino uno R3驱动直流减速电机(蓝牙控制)

此篇博客用于记录使用arduino驱动直流减速电机的过程&#xff0c;仅实现简单的功能&#xff1a;PID调速、蓝牙控制 1、直流减速电机简介2、DRV8833电机驱动模块简介3、HC-05蓝牙模块简介电机转动测试4、PID控制5、蓝牙控制电机 1、直流减速电机简介 我在淘宝购买的电机&#x…

24个已知403绕过方法的利用脚本

介绍 一个简单的脚本&#xff0c;仅供自用&#xff0c;用于绕过 403 在curl的帮助下使用24个已知的403绕过方法 它还可用于比较各种条件下的响应&#xff0c;如下图所示 用法 ./bypass-403.sh https://example.com admin ./bypass-403.sh website-here path-here 安装 git …

交叉熵损失函数基本概念及公式

Cross-Entropy Loss 1.二分类2. 对于多类别分类问题&#xff0c;其公式可以表示为&#xff1a;3. 公式深度挖掘解释——交叉熵损失函数公式中&#xff08;log&#xff09;的解释总结 交叉熵损失函数&#xff08;Cross-Entropy Loss&#xff09;是在机器学习和深度学习中常用的一…

陪护系统|陪护小程序提升长者护理服务质量的关键

在如今逐渐老龄化的社会中&#xff0c;老年人对更好的护理服务需求不断增加。科技的进步使得陪护小程序系统源码成为提供优质服务的重要途径之一。本文将从运营角度探讨如何优化陪护小程序系统源码&#xff0c;提升长者护理服务的质量。 首先&#xff0c;我们需要对软件的设计和…

redis集群方案

redis集群方案有三种:主从复制、哨兵模式、redis分片集群 主从集群&#xff0c;用于解决单节点redis并发能力上限的&#xff0c;一般就是读写分离。一般一主节点负责写数据&#xff0c;多从节点负责读取数据&#xff0c;主节点写入数据之后&#xff0c;需要将数据同步到从节点…

2024年世界听力日活动的主题是什么?

改变思维模式&#xff1a;让所有人的耳和听力保健成为现实&#xff01; Let’s make ear and hearing care a reality for all! 据 世界卫生组织 报道&#xff1a;在全球范围内&#xff0c;超过 80% 的耳和听力保健需求仍未得到满足 &#xff1b; 未得到解决的听力损失每…

Spring Boot整合Elasticsearch实现高效全文搜索

在现代应用程序中&#xff0c;对于大量数据的高效管理和快速检索是至关重要的。Elasticsearch&#xff08;以下简称ES&#xff09;作为一款开源的全文搜索引擎&#xff0c;为开发者提供了强大而灵活的搜索解决方案。本文将介绍如何通过Spring Boot框架整合Elasticsearch&#x…

2024第六届中国济南国际福祉及残疾人用品展览会/失能护理展

龘龘龙年-第六届山东福祉展会-将于5月27-29日在济南黄河国际会展中心举办&#xff1b; 一、引言 2024年&#xff0c;中国龙年&#xff0c;龙象征着力量、繁荣与希望。在这个特殊的年份&#xff0c;一场备受瞩目的盛会即将拉开帷幕。2024年第六届中国&#xff08;济南&#xf…

CrossOver虚拟机软件功能相似的软件

与 CrossOver 功能相似的软件有&#xff1a; Wine&#xff1a;Wine 是一款在 Unix 和 Unix-like 系统&#xff08;如 Linux、macOS&#xff09;上运行 Windows 应用程序的兼容层。与 CrossOver 类似&#xff0c;Wine 通过模拟 Windows 的 API 来实现应用程序的兼容性。它支持大…

FPGA_简单工程_VGA显示驱动器

一 理论 使用640*48060显示模式&#xff0c;将数字信号转换位模拟信号&#xff0c;经由VGA进行显示。 使用3GM723&#xff0c;3路高清视频编码芯片。 3GM7123编码芯片&#xff1a; 该芯片的主要功能是将RGB888的颜色数据转换成模拟的电压信号&#xff0c;然后进入到VGA接口的…

常见的物联网操作系统介绍

物联网&#xff08;Internet of Things&#xff0c;IoT&#xff09;是指将各种物理设备、车辆、家用电器、工业设备等通过网络连接起来&#xff0c;实现数据交换和通信的技术。物联网操作系统是管理这些设备并使其能够相互通信的软件平台。以下是一些常见的物联网操作系统&…

力扣:455. 分发饼干

贪心解法思路&#xff1a; 1.先把两个数组按顺序遍历好&#xff0c;之后用最大的饼干来喂最大的胃口&#xff0c;如果最大的饼干不能喂饱最大的胃口&#xff0c;就除去这个最大的胃口&#xff0c;在剩下的为胃口中找最大的胃口来进行比对。这题主要历用了通过局部的优解&#…

免费文字转语音工具,一款优秀且永久免费的文字转语音工具,同时拥有多种类型男声女声,支持多国语言转换,支持语速调节和下载!

一、软件简介 该工具只有一个功能&#xff0c;就是将输入框内的纯文本内容转换为指定语言的音频&#xff0c;并且可以自由调节语速及音色&#xff08;男声/女声&#xff09;&#xff0c;其内置了多种语音包&#xff0c;包含男声、女声、普通话、粤语以及方言&#xff0c;并且支…