網站首頁 編程語言 正文
總結
?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; }
原文鏈接:https://blog.csdn.net/weixin_43794311/article/details/128198672
相關推薦
- 2022-04-09 使用docker-compose一鍵部署開源博客wordpress
- 2022-05-26 openwrt安裝docker并啟動的操作方法_docker
- 2021-12-07 C語言SetConsoleTextAttribute函數使用方法_C 語言
- 2022-12-02 關于Nginx?命令行控制的問題_nginx
- 2023-05-05 Linux中grep命令詳解_linux shell
- 2022-12-10 Android入門之ScrollView的使用教程_Android
- 2022-12-21 Input系統之InputReader處理按鍵事件詳解_Android
- 2024-03-17 WSL子系統啟動報錯 Wsl/Service/CreateInstance/CreateVm/HCS
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支