創(chuàng)作不易,本篇文章如果幫助到了你,還請(qǐng)點(diǎn)贊 關(guān)注支持一下?>??<)!!
主頁專欄有更多知識(shí),如有疑問歡迎大家指正討論,共同進(jìn)步!
??c語言系列專欄:c語言之路重點(diǎn)知識(shí)整合 ??
給大家跳段街舞感謝支持!? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
本文基于——文件的基本概念:文件的基本概念、操作
一、文本寫操作
1.覆蓋重寫模式
使用wt以覆寫的方式打開文本文件:
FILE *p=fopen("E:\\TianXiFile\\這是一個(gè)文本文件.txt", "wt");
回顧向屏幕輸出的方式:
//屏幕輸出內(nèi)容:
printf("%d %.2f %s ...\n", 7, 6.22, "TianXi");
puts("Studio\n");
putchar("K");
文件輸出只需要在輸出的函數(shù)前添加一個(gè)f
//向文件輸出
fprintf(p,"%d %.2f %s ...\n", 7, 6.22, "TianXi");
fputs("Studio\n",p);
//fputchar("!");
fputc("K", p);
fprintf()函數(shù):
fputs()函數(shù):
fputc()函數(shù):
全部代碼:
// 覆蓋重寫模式
FILE *p=fopen("E:\\TianXiFile\\這是一個(gè)文本文件.txt", "wt");
if (p)
{
//屏幕輸出內(nèi)容:
printf("%d %.2f %s ...\n", 7, 6.22, "TianXi");
puts("Studio\n");
putchar("K");
//向文件輸出
fprintf(p,"%d %.2f %s ...\n", 7, 6.22, "TianXi");
fputs("Studio\n",p);
//fputchar("!");
fputc("K", p);
fclose(p);
p = NULL;
}
2.打開追加模式
使用wt以覆寫的方式打開文本文件
// 打開追加模式
FILE* p = fopen("E:\\TianXiFile\\這是一個(gè)文本文件2.txt", "at");
if (p)//如果文件打開成功
{
fputc('T', p);//向IO流緩沖區(qū)寫入一個(gè)字符
fputs("天喜", p);//向IO流緩沖區(qū)寫入一串字符
fclose(p);//關(guān)閉文件流
p = NULL;//釋放文件指針
}
else
{
printf("創(chuàng)建失敗\n");
}
二、文本讀操作
1.讀取整數(shù)
先創(chuàng)建一個(gè)文本文件,存放一些整數(shù)(包括逗號(hào)):
#include<stdio.h>
int main()
{
// 讀取若干個(gè)整數(shù)
int i;
FILE* readFile = fopen("E:\\TianXiFile\\成績.txt", "rt");//rt以只讀的方式打開文件
if (readFile)
{
//鍵盤緩沖區(qū)讀?。簊canf
//文件讀取:fscanf
while (!feof(readFile)) //feof函數(shù)判斷是否到了文件的尾部, !feof代表沒有 file end of file
{
fscanf(readFile,"%d,",&i);//以%d,的格式讀取每一個(gè)整數(shù)
printf("%d \n", i);
}
fclose(readFile);
readFile = NULL;
}
return 0;
}
問題:如果在數(shù)據(jù)后面多添加一個(gè)逗號(hào)還會(huì)讀取成功嗎?
運(yùn)行看到:91被重復(fù)讀取了兩次
原因就是讀取到最后一位時(shí)循環(huán)讀取未結(jié)束,以%d讀取時(shí)遇到 , 讀取失敗了 就重復(fù)了上一次讀取的91
正確讀取i變量的方法:
改變判斷循環(huán)結(jié)束的條件
fscanf(readFile, “%d”, &i)
大于0代表成功讀取了一個(gè)整數(shù)
if (readFile)
{
//鍵盤緩沖區(qū)讀?。簊canf
//文件讀取:fscanf
while (!feof(readFile)&& fscanf(readFile, "%d,", &i)>0) //feof函數(shù)判斷是否到了文件的尾部, !feof代表沒有 file end of file
{
//以%d,的格式讀取每一個(gè)整數(shù)
printf("%d \n", i);
}
fclose(readFile);
readFile = NULL;
}
2.讀取漢字
如何讀取文本文件中的漢字呢?
通過上面的方法,使用%s字符串讀?。?/p>
結(jié)果出現(xiàn)了亂碼
這是什么原因呢?
因?yàn)闈h字的雙字符存儲(chǔ)問題:
因此在文件中更改一下保存的編碼為ANSI就可以正常輸出漢字了:
fgets()讀?。?/p>
使用fgets()函數(shù)逐行讀取文件中的內(nèi)容,直至文件末尾為止。
在每一行末尾添加 ‘\0’ 空字符,實(shí)現(xiàn)字符串的標(biāo)準(zhǔn)化。
FILE* p = fopen("E:\\TianXiFile\\文本文檔.txt", "rt");
if (p)
{
char str[50];
//fscanf(p, "%s",str);
printf("讀取成功!\n");
while (!feof(p))
{
fgets(str, 50, p);
printf("%s\n", str);
}
fclose(p);
p = NULL;
}
else
{
printf("讀取失敗!");
}
文本文件的的讀寫操作到此結(jié)束,下面是二進(jìn)制文件的讀寫操作
【c語言】二進(jìn)制文件的讀寫操作文章來源:http://www.zghlxwxcb.cn/news/detail-795925.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-795925.html
大家的點(diǎn)贊、收藏、關(guān)注將是我更新的最大動(dòng)力! 歡迎留言或私信建議或問題。 |
大家的支持和反饋對(duì)我來說意義重大,我會(huì)繼續(xù)不斷努力提供有價(jià)值的內(nèi)容!如果本文哪里有錯(cuò)誤的地方還請(qǐng)大家多多指出(●'?'●) |
到了這里,關(guān)于【c語言】文本文件的讀寫操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!