C語言中讀寫交替時出現(xiàn)的問題分析
總結
1. 讀寫命令交替,一定要使用fseek重新定位,否則出現(xiàn)輸入顯示混亂
2. a追加寫入,不能讀;a+:只能追加寫入,可讀取全部
3. a相關模式不能修改原始數(shù)據(jù)文本,而r+可以修改原始文本
4. 寫入的文本,不論是字符還是字符串,最后是有自動添加的\0,個人根據(jù)現(xiàn)象理解的
“+”模式添加的不同
#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窗口顯示文本內(nèi)容,懶得每次打開txt查看
printf("\n");
system("pause");
return 0;
}
顯示結果a+和a對比分析:
a模式?jīng)]有讀取數(shù)據(jù)的功能,但能寫入,a+模式有讀寫的功能,但寫指針和讀指針不是同一位置,而且寫文本時會同時移動兩個指針,但會一直在文檔結尾追加

a+可讀寫的文件出現(xiàn)的問題
一次寫入命令后,若不定位指針,那么緊接著的讀取命令也會寫入;a+模式下,文檔最后寫入了6。因此,需要注意每次讀取和寫入文本命令轉換時重新使用feek(fp,n,0)定位

每個+(r+為例)模式下,讀寫交替,不重新fseek出現(xiàn)的問題
讀和寫命令轉換時也會出現(xiàn)問題,
#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語言中讀寫交替時出現(xiàn)的問題問題的文章就介紹到這了,更多相關c語言讀寫交替內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C語言數(shù)據(jù)結構之單鏈表與雙鏈表的增刪改查操作實現(xiàn)
這篇文章主要為大家詳細介紹了C語言數(shù)據(jù)結構中單鏈表與雙鏈表的增刪改查操作的實現(xiàn),相信大家如果搞懂了本文內(nèi)容,應對復雜的鏈表類的題也就能慢慢鉆研了2022-07-07

