❶ c語言怎麼把一個數組里的值存入文本文件
不多說,直接貼代碼:x0dx0a#include ❷ c語言中怎麼把一個結構體數組寫入文件 C語言把一個結構體數組寫入文件分三步: 1、以二進制寫方式(wb)打開文件 2、調用寫入函數fwrite()將結構體數據寫入文件 3、關閉文件指針 相應的,讀文件也要與之匹配: 1、以二進制讀方式(rb)打開文件 2、調用讀文件函數fread()讀取文件中的數據到結構體變數 3、關閉文件指針 參考代碼如下: fwrite(const void*buffer,size_t size,size_t count,FILE*stream); (1)buffer:指向結構體的指針(數據首地址) ❸ C語言,如何把一個數組存放到txt文件中去
//--------------------------------------------------------------------------- ❹ C語言,如何把一個數組存放到txt文件中去 1、使用VS新建空工程,直接點擊確定。 ❺ C語言中如何將一個數組導入到文件中
使用文件操作函數寫入文件即可。 ❻ C語言中,如何把數組里的數據寫入文件 使用for循環語句+文件操作函數即可把數組里的數據寫入文件。 1、C語言標准庫提供了一系列文件操作函數。文件操作函數一般以f+單詞的形式來命名(f是file的簡寫),其聲明位於stdio.h頭文件當中。例如:fopen、fclose函數用於文件打開與關閉;fscanf、fgets函數用於文件讀取;fprintf、fputs函數用於文件寫入;ftell、fseek函數用於文件操作位置的獲取與設置。一般的C語言教程都有文件操作一章,可以找本教材進一步學習。 ❼ 在用C語言中,如何將一個二維數組存儲到文本文件中
fwrite 用於寫 2 進制文件。用 fprintf 就可以了。 ❽ C語言中如何將一個數組導入到文件中
字元讀寫函數fgetc和fputc ❾ c語言怎麼把一個數組里的值存入文本文件
不多說,直接貼代碼: ❿ c語言編程中怎麼用文件存儲數據具體一點,謝謝
主要用C語言的庫函數,有open write read 或者是fopen fwrite fread這幾個函數,迅速就是先open 然後write,具體函數的用法可自行網路,如果你是問存儲數據的格式的話,自己定義結構體存儲的方式是最方便直接的
#include<stdio.h>
structstu{
charname[30];
intage;
doublescore;
};
intread_file();
intwrite_file();
intmain()
{
if(write_file()<0)//將結構體數據寫入文件
return-1;
read_file();//讀文件,並顯示數據
return0;
}
intwrite_file()
{
FILE*fp=NULL;
structstustudent={"zhangsan",18,99.5};
fp=fopen("stu.dat","wb");//b表示以二進制方式打開文件
if(fp==NULL)//打開文件失敗,返回錯誤信息
{
printf("openfileforwriteerror
");
return-1;
}
fwrite(&student,sizeof(structstu),1,fp);//向文件中寫入數據
fclose(fp);//關閉文件
return0;
}
intread_file()
{
FILE*fp=NULL;
structstustudent;
fp=fopen("stu.dat","rb");//b表示以二進制方式打開文件
if(fp==NULL)//打開文件失敗,返回錯誤信息
{
printf("openfileforreaderror
");
return-1;
}
fread(&student,sizeof(structstu),1,fp);//讀文件中數據到結構體
printf("name="%s"age=%dscore=%.2lf
",student.name,student.age,student.score);//顯示結構體中的數據
fclose(fp);//關閉文件
return0;
}
(2)size:一個數據項的大小(一般為結構體大小)
(3)count: 要寫入的數據項的個數,即size的個數
(4)stream:文件指針。
#include
<stdio.h>
int
main(void)
{
FILE
*fp;
int
i,a[10],b[10]={0};
fp=fopen("c:\\a.txt","w");//打開文件以便寫入數據
for
(i
=
0;
i
<
10;
i++)
{
//准備要寫入文件的數組
a[i]=i*327;
}
for
(i
=
0;
i
<
10;
i++)
{
//將a數組中的整數寫入fp指向的c:\a.txt文件
fprintf(fp,"%d\n",a[i]);
}
fclose(fp);
//寫入完畢,關閉文件
fp=fopen("c:\\a.txt","r");//打開文件以便從中讀取數據
for
(i
=
0;
i
<
10;
i++)
{
//從fp指向的文件中讀取10個整數到b數組
fscanf(fp,"%d",&b[i]);
}
fclose(fp);
//讀取完畢,關閉文件
for
(i
=
0;
i
<
10;
i++)
{
//輸出從fp文件讀取的10個整數。
printf("%d\n",b[i]);
}
return
0;
}
//---------------------------------------------------------------------------
對於數組type a[N], 要將其寫入文件有兩種方式可以使用。
1 將數組以二進制方式寫入文件。如
fwrite(a, sizeof(a), 1, fp);
可以將數組整體以二進制方式寫入文件中。
2 按照元素,依次寫入文件。具體寫入格式與數組的類型有關。如為int數組可以寫作:
int i;
for(i = 0; i < N; i++)
fprintf("%d,", a[i]);
兩種方法各有優缺點:
1 代碼量上,第一種方式更簡單高效;
2 運行效率上,第一種方法的執行效率更高;
3 文件空間大小上:
如果數組中的字元串元素較多,那麼二者寫入後目標文件大小相似,或者第二種方式佔用的空間較小。
如果數組中的整型或浮點型數據較多,那麼第一種方式佔用的空間較小。
4 目標文件可讀性:
第一種方法得到的文件是二進制文件,需要用專門的閱讀器打開,且必須是專業人士才可以讀懂。
第二種方法更直觀,直接打開文本文件就可以閱讀輸出結果。
2、常式:#include<stdio.h>
inti,a[100];
intmain(){
FILE*fp1=fopen("input.txt","r");//打開輸入文件
FILE*fp2=fopen("output.txt","w");//打開輸出文件
if(fp1==NULL||fp2==NULL){//若打開文件失敗則退出
puts("不能打開文件!");
rturn0;
}
for(i=0;fscanf(fp1,"%d",a+i)!=EOF;i++);//從輸入文件連續讀取整數到數組a
for(;i--;)fscanf(fp2,"%d",a[i]);//把數組a逆序寫入到輸出文件當中
fclose(fp1);//關閉輸入文件
fclose(fp2);//關閉輸出文件,相當於保存
return0;
}
int a[4][5]={1 ,2,2,3,4,2,4,7,9,0,5,6,7,8,3,5,8,6,2,1};
FILE *fout;
int i,j;
fout = fopen("abc.txt","w"); // 打開文件,文本輸出文件
for (j=0;j<4;j++){
for (i=0;i<5;i++){ fprintf(fout,"%d ",a[j][i]);} // 寫
fprintf(fout,"\n");
}
fclose(fout); //關閉
字元讀寫函數是以字元(位元組)為單位的讀寫函數。 每次可從文件讀出或向文件寫入一個字元。
1. 讀字元函數fgetc
fgetc函數的功能是從指定的文件中讀一個字元,函數調用的形式為:
字元變數=fgetc(文件指針);
例如:
ch=fgetc(fp);
其意義是從打開的文件fp中讀取一個字元並送入ch中。
對於fgetc函數的使用有以下幾點說明:
1) 在fgetc函數調用中,讀取的文件必須是以讀或讀寫方式打開的。
2) 讀取字元的結果也可以不向字元變數賦值,
例如:
fgetc(fp);
但是讀出的字元不能保存。
3) 在文件內部有一個位置指針。用來指向文件的當前讀寫位元組。在文件打開時,該指針總是指向文件的第一個位元組。使用fgetc 函數後,該位置指針將向後移動一個位元組。 因此可連續多次使用fgetc函數,讀取多個字元。應注意文件指針和文件內部的位置指針不是一回事。文件指針是指向整個文件的,須在程序中定義說明,只要不重新賦值,文件指針的值是不變的。文件內部的位置指針用以指示文件內部的當前讀寫位置,每讀寫一次,該指針均向後移動,它不需在程序中定義說明,而是由系統自動設置的。
讀入文件c1.doc,在屏幕上輸出。
#include<stdio.h>
main()
{
FILE *fp;
char ch;
if((fp=fopen("d:\\jrzh\\example\\c1.txt","rt"))==NULL)
{
printf("\nCannot open file strike any key exit!");
getch();
exit(1);
}
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
本常式序的功能是從文件中逐個讀取字元,在屏幕上顯示。程序定義了文件指針fp,以讀文本文件方式打開文件「d:\\jrzh\\example\\ex1_1.c」,並使fp指向該文件。如打開文件出錯,給出提示並退出程序。程序第12行先讀出一個字元,然後進入循環,只要讀出的字元不是文件結束標志(每個文件末有一結束標志EOF)就把該字元顯示在屏幕上,再讀入下一字元。每讀一次,文件內部的位置指針向後移動一個字元,文件結束時,該指針指向EOF。執行本程序將顯示整個文件。
2. 寫字元函數fputc
fputc函數的功能是把一個字元寫入指定的文件中,函數調用的形式為:
fputc(字元量,文件指針);
其中,待寫入的字元量可以是字元常量或變數,例如:
fputc('a',fp);
其意義是把字元a寫入fp所指向的文件中。
對於fputc函數的使用也要說明幾點:
1) 被寫入的文件可以用寫、讀寫、追加方式打開,用寫或讀寫方式打開一個已存在的文件時將清除原有的文件內容,寫入字元從文件首開始。如需保留原有文件內容,希望寫入的字元以文件末開始存放,必須以追加方式打開文件。被寫入的文件若不存在,則創建該文件。
2) 每寫入一個字元,文件內部位置指針向後移動一個位元組。
3) fputc函數有一個返回值,如寫入成功則返回寫入的字元,否則返回一個EOF。可用此來判斷寫入是否成功。
從鍵盤輸入一行字元,寫入一個文件,再把該文件內容讀出顯示在屏幕上。
#include<stdio.h>
main()
{
FILE *fp;
char ch;
if((fp=fopen("d:\\jrzh\\example\\string","wt+"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
printf("input a string:\n");
ch=getchar();
while (ch!='\n')
{
fputc(ch,fp);
ch=getchar();
}
rewind(fp);
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
printf("\n");
fclose(fp);
}
程序中第6行以讀寫文本文件方式打開文件string。程序第13行從鍵盤讀入一個字元後進入循環,當讀入字元不為回車符時,則把該字元寫入文件之中,然後繼續從鍵盤讀入下一字元。每輸入一個字元,文件內部位置指針向後移動一個位元組。寫入完畢,該指針已指向文件末。如要把文件從頭讀出,須把指針移向文件頭,程序第19行rewind函數用於把fp所指文件的內部位置指針移到文件頭。第20至25行用於讀出文件中的一行內容。
把命令行參數中的前一個文件名標識的文件,復制到後一個文件名標識的文件中, 如命令行中只有一個文件名則把該文件寫到標准輸出文件(顯示器)中。
#include<stdio.h>
main(int argc,char *argv[])
{
FILE *fp1,*fp2;
char ch;
if(argc==1)
{
printf("have not enter file name strike any key exit");
getch();
exit(0);
}
if((fp1=fopen(argv[1],"rt"))==NULL)
{
printf("Cannot open %s\n",argv[1]);
getch();
exit(1);
}
if(argc==2) fp2=stdout;
else if((fp2=fopen(argv[2],"wt+"))==NULL)
{
printf("Cannot open %s\n",argv[1]);
getch();
exit(1);
}
while((ch=fgetc(fp1))!=EOF)
fputc(ch,fp2);
fclose(fp1);
fclose(fp2);
}
本程序為帶參的main函數。程序中定義了兩個文件指針fp1和fp2,分別指向命令行參數中給出的文件。如命令行參數中沒有給出文件名,則給出提示信息。程序第18行表示如果只給出一個文件名,則使fp2指向標准輸出文件(即顯示器)。程序第25行至28行用循環語句逐個讀出文件1中的字元再送到文件2中。再次運行時,給出了一個文件名,故輸出給標准輸出文件stdout,即在顯示器上顯示文件內容。第三次運行,給出了二個文件名,因此把string中的內容讀出,寫入到OK之中。可用DOS命令type顯示OK的內容。
字元串讀寫函數fgets和fputs
1. 讀字元串函數fgets
函數的功能是從指定的文件中讀一個字元串到字元數組中,函數調用的形式為:
fgets(字元數組名,n,文件指針);
其中的n是一個正整數。表示從文件中讀出的字元串不超過 n-1個字元。在讀入的最後一個字元後加上串結束標志'\0'。
例如:
fgets(str,n,fp);
的意義是從fp所指的文件中讀出n-1個字元送入字元數組str中。
從string文件中讀入一個含10個字元的字元串。
#include<stdio.h>
main()
{
FILE *fp;
char str[11];
if((fp=fopen("d:\\jrzh\\example\\string","rt"))==NULL)
{
printf("\nCannot open file strike any key exit!");
getch();
exit(1);
}
fgets(str,11,fp);
printf("\n%s\n",str);
fclose(fp);
}
本例定義了一個字元數組str共11個位元組,在以讀文本文件方式打開文件string後,從中讀出10個字元送入str數組,在數組最後一個單元內將加上'\0',然後在屏幕上顯示輸出str數組。輸出的十個字元正是例13.1程序的前十個字元。
對fgets函數有兩點說明:
1) 在讀出n-1個字元之前,如遇到了換行符或EOF,則讀出結束。
2) fgets函數也有返回值,其返回值是字元數組的首地址。
2. 寫字元串函數fputs
fputs函數的功能是向指定的文件寫入一個字元串,其調用形式為:
fputs(字元串,文件指針);
其中字元串可以是字元串常量,也可以是字元數組名,或指針變數,例如:
fputs(「abcd「,fp);
其意義是把字元串「abcd」寫入fp所指的文件之中。
在前例中建立的文件string中追加一個字元串。
#include<stdio.h>
main()
{
FILE *fp;
char ch,st[20];
if((fp=fopen("string","at+"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
printf("input a string:\n");
scanf("%s",st);
fputs(st,fp);
rewind(fp);
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
printf("\n");
fclose(fp);
}
本例要求在string文件末加寫字元串,因此,在程序第6行以追加讀寫文本文件的方式打開文件string。然後輸入字元串,並用fputs函數把該串寫入文件string。在程序15行用rewind函數把文件內部位置指針移到文件首。再進入循環逐個顯示當前文件中的全部內容。
如果對您有幫助,請記得採納為滿意答案,謝謝!祝您生活愉快!
#include <stdio.h>
#define MAXCNT 2
void main(int argc,char * argv[])
{
int buf[MAXCNT];
FILE * fpout;
int i = 0;
printf("輸入個%d整數:",MAXCNT);
do
{
printf("輸入第%d個整數,按回車確認:",i);
scanf("%d",&buf[i++]);
fflush(stdin);
}while(i < MAXCNT);
if(!(fpout = fopen("out.txt","a+")))
{//a+表已追加的方式打開,即如果文件已經有內容,不覆蓋,而以w方式打開會覆蓋
printf("打開文件出錯!\n");
getchar();
exit(1);
}
else
{
i = 0;
do
{
fprintf(fpout,"%d\n",buf[i++]);
}while(i<MAXCNT);
}
if(!fclose(fpout))
{
printf("輸入成功,請打開文件:%s\\out.txt查看!\n",argv[0]);
}
else
printf("關閉文件:%s\\out.txt出錯!\n",argv[0]);
system("pause");
}