日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言中讀寫交替時出現的問題分析_C 語言

作者:MAR-Sky ? 更新時間: 2023-01-02 編程語言

總結

?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

欄目分類
最近更新