1樓:吉祥二進位制
c語言標準庫提供了一系列檔案i/o函式用於檔案操作,比如fopen()用於開啟檔案、fread()、fwrite()用於讀寫檔案、fseek()用於設定操作位置等等,一般c語言教程上都有檔案i/o一章,細緻內容,可以找本教科書學習一下。下面是一個示例**實現了,將一個磁碟檔案中的資訊複製到另一個磁碟檔案中。
#include < stdio.h >
int main()
if((out=fopen(outfile,"w"))==null)while(!feof(in))fputc(fgetc(in),out);
fclose(in);
fclose(out);
return 0;}
2樓:
#include
#include
#include
int main(void)
num = fread(line,1,50,fp);/*讀檔案一行*/
line[num] = '\0'; // 因為字串是以'\0'作結束標誌的,你以前沒加這個標誌。
puts(line);/*顯示*/
fclose(fp);/*關閉檔案*/
getchar();
return 0;}
3樓:匿名使用者
你好,經過我的測試,我認為出現亂碼的原因可能在於你的文字第一行並沒有50個字元,所以line[50]的陣列裡包含裡未初始化的字元,也就是常見的「燙」了,呵呵。希望對你有用。
4樓:匿名使用者
養成習慣:char line[50] = ; 定義陣列的時候把它初始化一下就ok了
真正原因是因為 fread讀取一行的時候 不會自動加上'\0' 這個結束符,初始化陣列就能避免這些問題
c語言檔案操作
5樓:匿名使用者
#include
int main()
fclose(fin);
fclose(fout);
return 0;}
6樓:匿名使用者
程式如下:
#include
#include
int main()
if(fp2==null)
while(!feof(fp1)) /*判斷是否到檔案結尾*/fclose(fp1);
fclose(fp2);}
7樓:匿名使用者
從專業的角度來說,需要構造一個文法,然後讀取,不過感覺對初學者太難了。
簡單描述一下思路:
第一步分詞,第二步語法分析,第三步儲存。
分詞:從檔案讀入一個字元,如果不是空格回車等空白字元,就再讀入一個,直到讀滿一個單詞。
語法:起始時為狀態0。
狀態0:如果讀入的是學號(例如字母或數字開頭的單詞)跳至狀態1;如果讀入的是其他跳至狀態2;如果檔案結束正常結束。
狀態1:如果讀入的是姓名(例如全部是中文的單詞),儲存並跳至狀態0;其他情況報錯。
狀態2:如果讀入的是學號,儲存並跳至狀態0;其他情況報錯。
儲存,已經說過是連結串列就不再多說了。單詞複製可以看看strdup和free的配合。
8樓:篤俠
#include
int main()
fscanf(pf1,"%d%d",&a,&b);
while(!feof(pf1))
fclose(pf1);
fclose(pf2);
return 0;}
c語言提供對檔案的各種操作有什麼用
9樓:匿名使用者
單獨對於某一個程式來說用不著但不預示著在其他的方面用不著啊比如說如果編寫上位機程式時就可以用到的啊。
c語言檔案操作fwrite和fread
10樓:吉祥二進位制
fread是c語言標準為中的一個函式。它從一個檔案流中讀資料,最多讀取count個元素,每個元素size位元組,如果呼叫成功返回實際讀取到的元素個數,如果不成功或讀到檔案末尾返回 0。
fwrite是c語言標準庫中的一個函式,指向檔案寫入一個資料塊。示例如下:
//讀取一個完整的檔案
#include
#include
int main()
// 如果檔案錯誤,退出1
// 獲得檔案大小
fseek(pfile , 0 , seek_end); // 指標移到檔案末位
lsize = ftell(pfile); // 獲得檔案長度
rewind(pfile); // 函式rewind()把檔案指標移到由stream(流)指定的開始處, 同時清除和流相關的錯誤和eof標記
// 為整個檔案分配記憶體緩衝區
buffer = (char*) malloc(sizeof(char) * lsize); // 分配緩衝區,按前面的 lsize
if (buffer == null) // 記憶體分配錯誤,退出2
// 該檔案複製到緩衝區
result = fread(buffer, 1, lsize, pfile); // 返回值是讀取的內容數量
if (result != lsize) // 返回值如果不和檔案大小,讀錯誤
// terminate // 檔案終止
fclose(pfile);
free(buffer);
return 0;
}綜合使用的例子。
#include
int main()
;pfile = fopen("myfile.bin" , "wb"); // 開啟檔案寫操作
fwrite(buffer , 1 , sizeof(buffer) , pfile); // 把浮點陣列寫到檔案 myfile.bin
fclose(pfile); // 關閉檔案
float read[3];
pfile = fopen("myfile.bin" , "rb"); // 重新開啟檔案讀操作
fread(read , 1 , sizeof(read) , pfile); // 從檔案中讀資料
printf("%f\t%f\t%f\n", read[0], read[1], read[2]);
fclose(pfile); // 關閉檔案
return 0;}
11樓:
讀了你的**,我覺得,你在用fread的時候,其實你的意圖是想將1.txt中的每一行按照你所定義的structure student中的欄位格式,進行讀取,將你的stud一個一個填充好。很遺憾,fread並不能做這件事情。
fread會將1.txt中的每行看做一整個字串,寫到你給的每個&stud[j]開頭的地址空間中,而無視你所給定的structure的定義,自然你printf就得不到預想的結果了。而fwrite倒是可以原原本本將寫入的字串回寫出來。
如果你想要按structure的格式讀入1.txt的資料,那麼就要用scanf咯。就像printf那樣,scanf的用法你一定是懂的。
c語言檔案操作的單字元讀取
12樓:杜爺1號
對檔案的讀和寫是最常用的檔案操作。在c語言中提供了多種檔案讀寫的函式:
1.字元讀寫函式 :fgetc和fputc2.
字串讀寫函式:fgets和fputs3.資料塊讀寫函式:
freed和fwrite4.格式化讀寫函式:fscanf和fprinf
13樓:還道人
在前面頭那裡加入#include"string.h"
使用c=getchar()函式 這個函式的意思是 從鍵盤輸入一個字元
14樓:匿名使用者
一、ch1=getchar();
//while(ch1!='$')//這裡不是個死迴圈??去掉再試fputc(ch1,fp);
fclose(fp);
二、 輸出也要改一下
while(1)
c語言如何用檔案儲存資料
15樓:匿名使用者
使用檔案操作函式即可用檔案儲存資料。
1、c語言標準庫提供了一系列檔案操作函式。檔案操作函式一般以f+單詞的形式來命名(f是file的簡寫),其宣告位於stdio.h標頭檔案當中。
例如:fopen、fclose函式用於檔案開啟與關閉;fscanf、fgets函式用於檔案讀取;fprintf、fputs函式用於檔案寫入;ftell、fseek函式用於檔案操作位置的獲取與設定。
2、例程:
#include
int a;
char b,c[100];
int main()
fscanf(fp1,"%d",&a);//從輸入檔案讀取一個整數b=fgetc(fp1);//從輸入檔案讀取一個字元fgets(c,100,fp1);//從輸入檔案讀取一行字串printf("%ld",ftell(fp1));//輸出fp1指標當前位置相對於檔案首的偏移位元組數
fputs(c,fp2);//向輸出檔案寫入一行字串fputc(b,fp2);//向輸出檔案寫入一個字元fprintf(fp2,"%d",a);//向輸出檔案寫入一個整數fclose(fp1);//關閉輸入檔案
fclose(fp2);//關閉輸出檔案,相當於儲存return 0;}
16樓:瀚漠
#include
#include
#include
#include
#include
struct test
;void main()
}for(i=0;i<10;i++) tm[i]=data[i].s; for(i=0;i<10;i++) p[i]=&data[i];
for(i=0;i<9;i++)
else break;
}/*用拆半法先將前半部分與min比較*/
for(i=6;i<9;i++)
else break;
}/*用拆半法先將後半部分與min比較*/
printf("the worst pingwei is %d and the sorce is %.1f\n",
p[bad]->num,p[bad]->s);
fprintf(fp,"the worst pingwei is %d and the sorce is %.1f\n",
p[bad]->num,p[bad]->s);
/*列印出最不公平裁判和其分數*/
printf("the best pingwei is %d and the sorce is %.1f\n",
p[good]->num,p[good]->s);
fprintf(fp,"the best pingwei is %d and the sorce is %.1f\n",
p[good]->num,p[good]->s);
/*列印出最公平裁判和其分數*/
printf("\n----------------------------------\n");
fprintf(fp,"\n----------------------------------\n");
printf("next one:"); /*列印出下一位*/
}while(1);
}輸出到檔案不難,在程式開始使用fopen開啟一個檔案,得到返回值fp,之後使用fprintf把想輸出的內容輸出到fp即可,在退出程式的時候使用fclose關閉fp。
c語言檔案操作要讀取tt檔案內容
在c語言中,檔案操作都是由庫函式來完成的。要讀取一個txt檔案,首先要使用檔案開啟函式fopen fopen函式用來開啟一個檔案,其呼叫的一般形式為 檔案指標名 fopen 檔名,使用檔案方式 其中,檔案指標名 必須是被說明為file 型別的指標變數,檔名 是被開啟檔案的檔名。使用檔案方式 是指檔案...
c 檔案操作
寫檔案用 outfile.write name.c str name.size 讀檔案用 char s 80 ifstream infile my.txt ios binary infile.read s,80 name s 寫錯了檔案 sizeof name name 裡沒東西,不知道大小。這裡有...
c語言檔案操作問題,怎樣替換檔案中一行資料
通過使用下面的幾個函式,fopen,fprintf,fscanf,fseek,ftell 具體的函式函式原型如下所示 file fopen const char filename,const char mode int fprintf file stream,const char format,in...