返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言中读写交替时出现的问题分析
  • 365
分享到

C语言中读写交替时出现的问题分析

c语言读写交替交替读写问题 2022-12-08 20:12:08 365人浏览 薄情痞子
摘要

目录总结“+”模式添加的不同显示结果a+和a对比分析:a+可读写的文件出现的问题读和写命令转换时也会出现问题,总结  1. 读写命令交替,一定要使用

总结

 1. 读写命令交替,一定要使用fseek重新定位,否则出现输入显示混乱
 2. a追加写入,不能读;a+:只能追加写入,可读取全部
 3. a相关模式不能修改原始数据文本,而r+可以修改原始文本
 4. 写入的文本,不论是字符还是字符串,最后是有自动添加的\0,个人根据现象理解的

“+”模式添加的不同

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

int main(void){
	FILE *fp;
	char b;
	//每次测试保证txt文件中只"有123456"这6个字符;
	fp=fopen("file.txt","a+");   //只仅仅修改这里的模式为a+和a,和保证txt开始文本只有123456
	rewind(fp);  //指针在文件开始
	b = fgetc(fp);
	printf("第一次读:%c\n",b);
	fseek(fp,2,0);
	printf("第二次读:%c\n",fgetc(fp));
	fseek(fp,2,0);
	fputs("sag",fp);
	printf("第三次读:%c\n",fgetc(fp));

	fclose(fp);
	system("type file.txt ");  //只是在cmd窗口显示文本内容,懒得每次打开txt查看
	printf("\n");
	system("pause");	
	return 0;
}

显示结果a+和a对比分析:

a模式没有读取数据的功能,但能写入,a+模式有读写的功能,但写指针和读指针不是同一位置,而且写文本时会同时移动两个指针,但会一直在文档结尾追加

在这里插入图片描述

a+可读写的文件出现的问题

一次写入命令后,若不定位指针,那么紧接着的读取命令也会写入;a+模式下,文档最后写入了6。因此,需要注意每次读取和写入文本命令转换时重新使用feek(fp,n,0)定位

在这里插入图片描述

每个+(r+为例)模式下,读写交替,不重新fseek出现的问题

读和写命令转换时也会出现问题,

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

int main(void){
	FILE *fp;
	char a[4],b;

	fp=fopen("file.txt","r+");
	rewind(fp);
	b = fgetc(fp);
	printf("第一次读:%c\n",b);
	fseek(fp,2,0);
	printf("第二次读:%c\n",fgetc(fp));
	fseek(fp,1,0);
	fputs("sa",fp);
	//fseek(fp,2,0);
	printf("第三次读:%c\n",fgetc(fp));

	fclose(fp);
	system("type file.txt ");
	printf("\n");
	system("pause");	
	return 0;
}

在这里插入图片描述

到此这篇关于C语言中读写交替时出现的问题问题的文章就介绍到这了,更多相关c语言读写交替内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言中读写交替时出现的问题分析

本文链接: https://lsjlt.com/news/174386.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C语言中读写交替时出现的问题分析
    目录总结“+”模式添加的不同显示结果a+和a对比分析:a+可读写的文件出现的问题读和写命令转换时也会出现问题,总结  1. 读写命令交替,一定要使用...
    99+
    2022-12-08
    c语言读写交替 交替读写问题
  • c语言中缓冲区问题的示例分析
    这篇文章主要介绍了c语言中缓冲区问题的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。发现问题你是不是总会出现当你输入的时候(你想的是只输出一个内容),但是最后却输入两...
    99+
    2023-06-25
  • 如何分析C语言在STM32中的内存分配问题
    今天就跟大家聊聊有关如何分析C语言在STM32中的内存分配问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。01、前言不说废话,先上示例代码uint8_t num_byte...
    99+
    2023-06-22
  • C语言中main()函数参数问题的示例分析
    这篇文章主要介绍了C语言中main()函数参数问题的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。#include<stdio.h>void m...
    99+
    2023-06-29
  • C语言多线程开发中死锁与读写锁问题详解
    目录死锁读写锁死锁 有时,一个线程需要同时访问两个或更多不同的共享资源,而每个资源又都由不同的互斥量管理。当超过一个线程加锁同一组互斥量时,就有可能发生死锁; 两个或两个以上的进程在...
    99+
    2024-04-02
  • C语言中关于scanf读取缓存区的问题
    目录前言scanf函数的定义功能:执行格式化输入总结解决方法前言 在牛客做了很多坑爹的题,明明代码没问题但是就退无法AC,看了很多题解之后,发现是scanf读取缓存区,在输入输出时出...
    99+
    2024-04-02
  • 4组C语言中顺序读写文件的函数分享
    目录预备知识:fopen和fclose1.字符读写:fputc和fgetc2.文本行读写:fputs和fgets3.格式化读写:fprintf和fscanf4.二进制读写:fwrit...
    99+
    2023-05-13
    C语言顺序读写文件函数 C语言顺序读写文件 C语言 读写文件
  • C语言多线程开发中死锁与读写锁问题怎么解决
    今天小编给大家分享一下C语言多线程开发中死锁与读写锁问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。死锁有时,一个...
    99+
    2023-06-30
  • C语言一维数组算法问题的示例分析
    这篇文章给大家分享的是有关C语言一维数组算法问题的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。问题1:将数组中的数逆序存放本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放, 再按...
    99+
    2023-06-25
  • C语言在输入输出时遇到的常见问题总结
    目录一、前言二、取整的方法(1)使用 int 强制转换(2)使用floor函数向下取整(3)使用ceil函数向上取整三、数值四舍五入(1)使用round函数进行四舍五入(2)使用ri...
    99+
    2024-04-02
  • C语言输出孪生素数的实现示例分析
    今天就跟大家聊聊有关C语言输出孪生素数的实现示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.题目内容:孪生素数是指间隔为 2 的相邻素数,例如最小的孪生素数对是3和5,5和...
    99+
    2023-06-26
  • Java实现生产者消费者问题与读者写者问题的示例分析
    这篇文章将为大家详细讲解有关Java实现生产者消费者问题与读者写者问题的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、生产者消费者问题生产者消费者问题是研究多线程程序时绕不开的经典问题之一,它...
    99+
    2023-05-30
    java
  • 详解C语言在STM32中的内存分配问题
    01、前言 不说废话,先上示例代码 uint8_t num_byte[4]; uint32_t num_word; const uint32_t num_word_const =...
    99+
    2024-04-02
  • C语言中传值与传址交换整数的示例分析
    小编给大家分享一下C语言中传值与传址交换整数的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!传值调用要想交换两个整数的值,我们可以自定义一个函数,来实现这个过程。具体代码如下:#include <s...
    99+
    2023-06-20
  • 关于c语言中输出字符指针的相关问题
    目录c语言输出字符指针问题例如定义一个 char * p = "hello";的字符指针c语言指针求字符串长度c语言输出字符指针问题 例如定义一个 char * ...
    99+
    2024-04-02
  • C语言中关于时间复杂度的示例分析
    本篇文章为大家展示了C语言中关于时间复杂度的示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、时间复杂度1.什么是时间复杂度?空间效率,时间效率(较为关注)时间复杂度:算法中的操作执行次数,...
    99+
    2023-06-26
  • 分析Mysql表读写、索引等操作的sql语句效率优化问题
    上次我们说到mysql的一些sql查询方面的优化,包括查看explain执行计划,分析索引等等。今天我们分享一些 分析mysql表读写、索引等等操作的sql语句。 闲话不多说,直接上代码: 反映表的读写压力...
    99+
    2024-04-02
  • Java开发中,如何避免文件读写出现的常见问题?
    Java开发中,文件读写是常见的操作之一。然而,由于各种原因,文件读写可能会出现一些常见问题。这些问题可能会导致数据损坏,程序崩溃等严重后果。因此,在Java开发中,我们需要特别注意文件读写操作,并采取一些措施来避免常见问题的出现。 本文将...
    99+
    2023-09-12
    关键字 开发技术 文件
  • 如何解决Go语言中的并发文件的读写锁冲突问题?
    如何解决Go语言中的并发文件的读写锁冲突问题?在Go语言中,我们经常会遇到需要同时对一个文件进行读写操作的场景,比如并发地写日志文件。如果不加以控制,多个goroutine同时对同一个文件进行读写操作,就会产生冲突,导致数据丢失或不一致。为...
    99+
    2023-10-22
    并发 关键词:Go语言 文件读写锁冲突
  • 解决R语言安装时出现辑程包不存在的问题
    【解决方案】 1.使用命令单独安装caret,安装的时间很长。 install.packages("caret", dependencies = c("Depends", "S...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作