當前位置:首頁 » 編程語言 » c語言文件讀寫函數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言文件讀寫函數

發布時間: 2022-06-28 09:39:00

A. 關於c語言文件寫入讀取函數的問題 謝謝

fprintf和printf是一樣的用法。只不過前者用於寫文件,後者用於寫屏幕而已!

B. C語言如何實現對txt文件的讀取和寫入

1、使用VS新建空工程,直接點擊確定,如下所示。

C. c語言文件的讀寫

由於你的程序只有一個主函數,看來你還不熟悉函數,那麼我告訴你在你程序的基礎上怎麼修改吧!

一、多定義兩個變數:

1. 先添加頭文件,寫在最前面#include <string.h>

2. 再定義兩個變數

FILE*fp=NULL;
charfilename[100]={0};

二、在寫入文件之前,先打開一個要寫入的文件,若沒有此文件,就新建一個。在想寫入文件的地方:

	printf("

			---------下面生成xml文件---------


");
strcpy(filename,font); //獲得用戶輸入的文件名稱
strcat(filename,".xml"); //添加xml文件後綴
fp=fopen(filename,"wt"); //打開文件

三、在想寫入文件的地方調用 fprintf函數:

fprintf函數使用很簡單:將所有你寫的printf復制一下,然後在前面加上f成為fprintf,然後在添加新的參數fp,如:

原printf為

printf("<?xmlversion='1.0'encoding='UTF-8'standalone='yes'?>
");

改為fprintf

fprintf(fp,"<?xmlversion='1.0'encoding='UTF-8'standalone='yes'?>
");

舉例你的代碼如下修改:

	printf("<?xmlversion='1.0'encoding='UTF-8'standalone='yes'?>
");
printf("<stylewidth="%d"height="%d"> ",width,height);

if(fp!=NULL) //若打開文件成功
{
fprintf(fp,"<?xmlversion='1.0'encoding='UTF-8'standalone='yes'?> ",fp);
fprintf(fp,"<stylewidth="%d"height="%d"> ",width,height);
}

其他地方以此類推,檔xml文件寫完時,要關閉該文件:

	printf("</style>


");
fprintf(fp,"</style> ");//寫入文件
fclose(fp);//關閉該xml文件
fp=NULL;//將文件指針賦值為NULL

四、寫入til文件和css文件時,操作類似:

	printf("

			---------下面生成til文件---------


");
strcpy(filename,font);
strcat(filename,".til");
fp=fopen(filename,"wt");
		printf("[GLOBAL]
");
printf("USE_ALPHA=1 ");
printf("TILE_NUM=%d ",n);

if(fp!=NULL)//若文件打開成功
{
fprintf(fp,"[GLOBAL] ");//寫入文件內哦
fprintf(fp,"USE_ALPHA=1 ");
fprintf(fp,"TILE_NUM=%d ",n);
}

。。。其餘省略

可以追問。

D. 如何用C語言讀寫文件

c語言讀寫文件程序:

#include "stdio.h"

#include <stdlib.h>

main()

{

FILE *fp1;//定義文件流指針,用於打開讀取的文件

FILE *fp2;//定義文件流指針,用於打開寫操作的文件

char text[1024];//定義一個字元串數組,用於存儲讀取的字元

fp1 = fopen("d:\a.txt","r");//只讀方式打開文件a.txt

fp2 = fopen("d:\b.txt","w");//寫方式打開文件a.txt

while(fgets(text,1024,fp1)!=NULL)//逐行讀取fp1所指向文件中的內容到text中

{

puts(text);//輸出到屏幕

fputs(text,fp2);//將內容寫到fp2所指向文件中

}

fclose(fp1);//關閉文件a.txt,有打開就要有關閉

fclose(fp2);//關閉文件b.txt

}

(4)c語言文件讀寫函數擴展閱讀:

C語言文件讀寫操作總結

一.非標准文件的讀寫 不帶緩沖的

1.文件的打開和關閉

open()函數的作用是打開文件,其調用格式為: int open(char *filename, int access); 該函數表示按access的要求打開名為filename的文件,返回值為文件描述字,其中access有兩部分內容: 基本模式和修飾符, 兩者用" "("或")方式連接,修飾符可以有多個, 但基本模式只能有一個。

access的規定

O_RDONLY 只讀

O_APPEND 文件指針指向末尾

O_WRONLY 只寫

O_CREAT 文件不存在時創建文件, 屬性按基本模式屬性

O_RDWR 讀寫

O_BINARY 打開一個二進制文件

O_TEXT 打開一個文字文件

open()函數打開成功, 返回值就是文件描述字的值(非負值), 否則返回-1。 close()函數的作用是關閉由open()函數打開的文件, 其調用格式為: int close(int handle); 該函數關閉文件描述字handle相連的文件。

2.讀寫函數

int read(int handle, void *buf, int count);

read()函數從handle(文件描述字)相連的文件中, 讀取count個位元組放到buf所指的緩沖區中, 返回值為實際所讀位元組數, 返回-1表示出錯。返回0 表示文件結束。

write()函數的調用格式為: int write(int handle, void *buf, int count); write()函數把count個位元組從buf指向的緩沖區寫入與handle相連的文件中, 返回值為實際寫入的位元組數。

3.隨機定位函數

lseek()函數的調用格式為: int lseek(int handle, long offset, int fromwhere);

該函數對與handle相連的文件位置指針進行定位,功能和用法與fseek()函數相同。 tell()函數的調用格式為: long tell(int handle); 該函數返回與handle相連的文件現生位置指針, 功能和用法與ftell()相同

二、標准文件的讀寫

1.文件的打開函數fopen()

文件的打開操作表示將給用戶指定的文件在內存分配一個FILE結構區,並將該結構的指針返回給用戶程序,以後用戶程序就可用此FILE指針來實現對指定文件的存取操作了。

當使用打開函數時,必須給出文件名、文件操作方式(讀、寫或讀寫),如果該文件名不存在,就意味著建立(只對寫文件而言,對讀文件則出錯),並將文件指針指向文件開頭。若已有一個同名文件存在,則刪除該文件,若無同名文件,則建立該文件,並將文件指針指向文件開頭。

fopen(char *filename,char *type);

其中*filename是要打開文件的文件名指針,一般用雙引號括起來的文件名表示,也可使用雙反斜杠隔開的路徑名。

而*type參數表示了對打開文件的操作方式。其可採用的操作方式如下:

"r" 打開,只讀; "w" 打開,文件指針指到頭,只寫; "a" 打開,指向文件尾,在已存在文件中追加; "rb" 打開一個二進制文件,只讀; "wb" 打開一個二進制文件,只寫; "ab" 打開一個二進制文件,進行追加 ;

"r+" 以讀/寫方式打開一個已存在的文件; "w+" 以讀/寫方式建立一個新的文本文件 ;"a+" 以讀/寫方式打開一個文件文件進行追加 ;"rb+" 以讀/寫方式打開一個二進制文件; "wb+" 以讀/寫方式建立一個新的二進制文件 ;

"ab+" 以讀/寫方式打開一個二進制文件進行追加 ;當用fopen()成功的打開一個文件時,該函數將返回一個FILE指針,如果文件打開失敗,將返回一個NULL指針。

E. C語言如何讀取txt文本裡面的內容

C語言可以使用fopen()函數讀取txt文本里。

示例:

#include <stdio.h>

FILE *stream, *stream2;

void main( void )

{

int numclosed;

/* Open for read (will fail if file "data" does not exist) */

if( (stream = fopen( "data", "r" )) == NULL )

printf( "The file 'data' was not opened " );

else

printf( "The file 'data' was opened " );

/* Open for write */

if( (stream2 = fopen( "data2", "w+" )) == NULL )

printf( "The file 'data2' was not opened " );

else

printf( "The file 'data2' was opened " );

/* Close stream */

if(fclose( stream2 ))

printf( "The file 'data2' was not closed " );

/* All other files are closed: */

numclosed = _fcloseall( );

printf( "Number of files closed by _fcloseall: %u ", numclosed );

}

(5)c語言文件讀寫函數擴展閱讀

使用fgetc函數

#include <stdio.h>

#include <stdlib.h>

void main( void )

{

FILE *stream;

char buffer[81];

int i, ch;

/* Open file to read line from: */

if( (stream = fopen( "fgetc.c", "r" )) == NULL )

exit( 0 );

/* Read in first 80 characters and place them in "buffer": */

ch = fgetc( stream );

for( i=0; (i < 80 ) && ( feof( stream ) == 0 ); i++ )

{

buffer[i] = (char)ch;

ch = fgetc( stream );

}

/* Add null to end string */

buffer[i] = '';

printf( "%s ", buffer );

fclose( stream );

}

F. C語言讀取輸出文件函數問題

fread是一個函數。從一個文件流中讀數據,最多讀取count個元素,每個元素size位元組,如果調用成功返回實際讀取到的元素個數,如果不成功或讀到文件末尾返回
0。
函數原型
size_t
fread
(
void
*buffer,
size_t
size,
size_t
count,
file
*stream)
;


buffer
用於接收數據的內存地址
size
要讀的每個數據項的位元組數,單位是位元組
count
要讀count個數據項,每個數據項size個位元組.
stream
輸入流
返回值
實際讀取的元素個數。如果返回值與count不相同,則可能文件結尾或發生錯誤。從ferror和feof獲取錯誤信息或檢測是否到達文件結尾。

G. 用C語言的函數創建、打開和讀寫文件

#include<stdio.h>
voidmain(intargc,char*argv[])//命令行參數
{
intch;//定義文件類型指針
FILE*fp;//判斷命令行是否正確
if(argc!=2)
{
printf("Errorformat,Usage:displayfilename1 ");
return;//鍵入了錯誤的命令行,結束程序的執行
}
//按讀方式打開由argv[1]指出的文件
if((fp=fopen(argv[1],"r"))==NULL)
{
printf("Thefile<%s>cannotbeopened. ",argv[1]);//打開操作不成功
return;//結束程序的執行
}
//成功打開了argv[1]所指文件
ch=fgetc(fp);//從fp所指文件的當前指針位置讀取一個字元
while(ch!=EOF)//判斷剛讀取的字元是否是文件結束符
{
putchar(ch);//若不是結束符,將它輸出到屏幕上顯示
ch=fgetc(fp);//繼續從fp所指文件中讀取下一個字元
}//完成將fp所指文件的內容輸出到屏幕上顯示
fclose(fp);//關閉fp所指文件
}

H. 求c語言讀取寫入文本文件的函數實現

#include<stdio.h>
#include<string.h>//strlen()
#include<malloc.h>//malloc()
intFileCreate(char*filePath,char*fileContext)
{
FILE*fp;
fp=fopen(filePath,"w+");
if(fp)
{
fwrite(fileContext,strlen(fileContext),1,fp);
fclose(fp);
return0;
}
return1;
}
char*FileRead(char*filePath)
{
FILE*fp;
longintfsize;
char*fileContext;
fp=fopen(filePath,"r");
if(fp)
{
fseek(fp,0,SEEK_END);
fsize=ftell(fp);
rewind(fp);
fileContext=(char*)malloc(fsize+1);//注意釋放內存
fread(fileContext,fsize,1,fp);
*(fileContext+fsize)='';
fclose(fp);
returnfileContext;
}
returnNULL;
}

intmain()//測試
{
char*fileContext;
char*filePath="d:\111.txt";
FileCreate(filePath,"abc123");
fileContext=FileRead(filePath);
printf("%s",fileContext);
free(fileContext);//釋放
return0;
}

I. 請問C語言對文件的讀取有哪些函數,都有什麼功能像fseek();fscanf();fread......什麼的

C語言文件操作函數

13.1C語言文件
1,兩種文件存取方式(輸入,輸出方式)
順序存取
直接存取
2,數據的兩種存放形式
文本文件
二進制文件

13.2文件指針
定義文件類型指針變數的一般形式:
FILE *指針變數名;
例如:
FILE *fp1,*fp2;

13.3打開文件
在使用文件之前,需打開文件.在C里使用fopen函數打開文件.格式為:
fopen(文件名,文件使用方式);
此函數返回一個指向FILE類型的指針.如:
FILE *fp;
fp=fopen("file_1","r");
如果調用成功,fp就指向file_1,否則返回為NULL,所以為了保證文件的正確使用,要進行測試.採用如下語句:
If((fp=fopen("file_1","r"))==NULL)
{
printf("Cannot open this file\n");
exit(0);
}
最常用的文件使用方式及其含義如下:
1,"r".為讀而打開文本文件.(不存在則出錯)
2,"rb".為讀而打開二進制文件.
3,"w".為寫而打開文本文件.(若不存在則新建,反之,則從文件起始位置寫,原內容將被覆蓋)
4,"wb".為寫而打開二進制文件.
5,"a".為在文件後面添加數據而打開文本文件.(若不存在,則新建;反之,在原文件後追加)
6,"ab".為在文件後面添加數據而打開一個二進制文件.
最常用的文件使用方式及其含義如下:
7,"r+".為讀和寫而打開文本文件.(讀時,從頭開始;在寫數據時,新數據只覆蓋所佔的空間,其後不變)
8,"rb+".為讀和寫而打開二進制文件.只是在隨後的讀寫時,可以由位置函數設置讀和寫的起始位置.
9,"w+".首先建立一個新文件,進行寫操作,隨後可以從頭開始讀.(若文件存在,原內容將全部消失)
10,"wb+".功能與"w+"同.只是在隨後的讀寫時,可以由位置函數設置讀和寫的起始位置.
最常用的文件使用方式及其含義如下:
11,"a+".功能與"a"相同;只是在文件尾部添加新的數據後,可以從頭開始讀.
12,"ab+".功能與"a+"相同;只是在文件尾部添加新數據之後,可以由位置函數設置開始讀的起始位置.

13.4關閉文件

當文件的讀寫操作完成之後,使用fclose函數關閉文件.格式如下:
fclose(文件指針)
如:fclose(fp);

13.5調用getc(fgetc)和putc(fputc)函數進行輸入和輸出
1,調用putc(或fputc)函數輸出一個字元
調用形式為:
putc(ch,fp);
功能是:將字元ch寫到文件指針fp所指的文件中去.當輸出成功,putc函數返回所輸出的字元;否則,返回一個EOF值.EOF是在stdio.h庫函數文件中定義的符號常量,其值等於-1.

13.5調用getc(fgetc)和putc(fputc)函數進行輸入和輸出
例如:把從鍵盤輸入的文本按原樣輸出到名為file_1.dat文件中,用字元@作為鍵盤輸入結束標志.

#include
Void main()
{
FILE *fpout;
char ch;
if(fpout=fpopen("file_1","w")==NULL)
{
printf("Cannot open this file!\n");
exit(0);
}
ch=getchar();
while(ch!='@')
{ fputc(ch,fpout); ch=getchar(); }
fclose(fpout);
}
2.調用getc(或fgetc)函數輸入一個字元
調用形式為:
ch=getc(pf);
功能是:從pf指定的文件中讀如一個字元,並把它作為函數值返回.
例如:把一個已存在磁碟上的file_1.dat文本文件中的內容,原樣輸出到終端屏幕上.
#include
void main(){
FILE *fpin;
char ch;
if((fpin=fopen("file_1.dat","r"))==NULL)
{ printf("Cann't open this file!\n");exit(0);}
ch=fgetc(fpin);
while (ch!=EOF)
{ putchar(ch); ch=fgetc(fpin);}
fclose(fpin);
}

13.6判斷文件結束函數feof
EOF可以作為文本文件的結束 標志,但不能作為二進制文件的結束符.feof函數既可以判斷二進制文件,又可以判斷文本文件.
例:編寫程序,用於把一個文本文件(源)復制到另一個文件(目的)中,源文件名和目的文件名由命令行輸入.命令形式如下:
可執行程序名 源文件名 目的文件名
#include
void file(FILE* ,FILE *);
void main(int argc,char *argv[]){
FILE *fpin,*fpout;
if(argc==3)
{ fpin=fopen(argv[1],"r");
fpout=fopen(argv[2],"w");
file(fpin,fpout);
fclose(fpin);fclose(fpout);
}
else if(argc>3)
printf("The file names too many!!\n";
else
printf("There are no file names for input or output!!\n );
}
void file(FILE *fpin,FILE *fpout)
{
char ch;
ch=getc(fpin);
while(!feof(fpin))
{putc(ch,fpout); ch=getc(fpin);}
}

13.7fscanf函數和fprintf函數
1,fscanf函數
fscanf只能從文本文件中按格式輸入,和scanf函數相似,只不過輸入的對象是磁碟上文本文件中的數據.調用形式為:
fscanf(文件指針,格式控制字元串,輸入項表)
例如:fscanf(fp,"%d%d",&a,&b);
fscanf(stdin,"%d%d",&a,&b);
等價於scanf("%d%d",&a,&b);
3.fprintf函數
fprintf函數按格式將內存中的數據轉換成對應的字元,並以ASCII代碼形式輸出到文本文件中.Fprintf函數和printf函數相似,只是將輸出的內容按格式存放到磁碟的文本文件中.調用形式如下:
fprintf(文件指針,格式控制字元串,輸出項表)
如:fprintf(fp,"%d %d",x,y);
以下語句 fprintf(stdout,"%d %d",x,y)

13.8fgets函數和fputs函數
1,fgets函數
fgets函數用來從文件中讀入字元串.調用形式如下:
fgets(str,n,fp);
函數功能是:從fp所指文件中讀入n-1個字元放入str為起始地址的空間內;如果在未讀滿n-1個字元時,則遇到換行符或一個EOF結束本次讀操作,並已str作為函數值返回.
13.8fgets函數和fputs函數
2,fputs函數
fput函數把字元串輸出到文件中.函數調用形式如下:
fputs(str,fp);
注意:為了便於讀入,在輸出字元串時,應當人為的加諸如"\n"這樣的字元串.

#include <stdio.h>
#include <iostream>

int main(int argc, char *argv[])
{
char arr[10] ;
char *ap = "hello!" ;
FILE *fp ;
if ((fp = fopen("hello.txt", "wt+")) == NULL)
{
printf("error!") ;
exit(1) ;
}
fputs(ap, fp) ;
rewind(fp) ; //
fgets(arr, 10, fp) ;
printf("%s\n", arr) ;
fclose(fp) ;
return 0 ;
}

13.9fread函數和fwrite函數
例如有如下結構體:
struct st{
char num[8];
float mk[5];
}pers[30];
以下循環將把這30個元素中的數據輸出到fp所指文件中.
for(i=0;i<30;i++)
fwrite(&pers[i],sizeof(struct st),1,fp);

13.9fread函數和fwrite函數
以下語句從fp所指的文件中再次將每個學生數據逐個讀入到pers數組中.
i=0;
fread(&pers[i],sizeof(struct st),1,fp);
while(!feof(fp))
{ i++;
fread(&pers[i],sizeof(struct st),1,fp);
}

13.10文件定位函數
1,fseek函數
fseek函數用來移動文件位置指針到指定的位置上,接著的讀或寫操作將從此位置開始.函數的調用形式如下:
fseek(pf,offset,origin)
pf:文件指針
offset:以位元組為單位的位移量,為長整形.
origin:是起始點,用來指定位移量是以哪個位置為基準的.
1,fseek函數
位移量的表示方法
標識符 數字 代表的起始點
SEEK_SET 0 文件開始
SEEK_END 2 文件末尾
SEEK_CUR 1 文件當前位置
假設pf已指向一個二進制文件,則;
fseek(pf,30L,SEEK_SET)
fseek(pf,-10L*sizeof(int),SEEK_END)
對於文本文件,位移量必須是0;如:
fseek(pf,0L,SEEK_SET)
fseek(pf,0L,SEEK_END)
2. ftell函數
ftell函數用以獲得文件當前位置指針的位置,函數給出當前位置指針相對於文件開頭的位元組數.如;
long t;
t=ftell(pf);
當函數調用出錯時,函數返回-1L.
我們可以通過以下方式來測試一個文件的長度:
fseek(fp,0L,SEEK_END);

t=ftell(fp);
3.rewind函數
調用形式為:
rewind(pf);
函數沒有返回值.函數的功能是使文件的位置指針回到文件的開頭.

13.10文件應用
在磁碟上的test.txt文件中放有10個不小於2的正整數,用函數調用方式編寫程序.要求實現:
1,在被調函數prime中,判斷和統計10個整數中的素數以及個數.
2,在主函數中將全部素數追加到磁碟文件test.txt的尾部,同時輸出到屏幕上.
#include
#include
Int prime(int a[],int n)
{
int I,j,k=0,flag=0;
for(i=0;i { for(j=2;j if(a[i]%j==0)
{ flag=0; break;}
else flag=1;
if(flag)
{a[k]=a[i];k++;}
}
return k;
}
void main(){
int n,I,a[10];
FILE *fp;
fp=fopen("test1-2.txt","r+");
for(n=0;n<10;n++)
fscanf(fp,"%d",&a[n]);
n=prime(a,n);
fseek(fp,o,2);
for(i=0;i {printf("%3d",a[i]);
fprintf(fp,"%3d",a[i]);
}
fclose(fp);