c语言中读取文件
⑴ c语言中文件的读写实际过程
RB和R本质上是二进制数据流,但用于文本的二进制数据的含义是ASCII或其他内部代码。R/W和Rb/WB之间的一个重要区别是,R/W的文本换行格式在不同的系统上是不同的(DOS/windows下的回车字符Cr('\R')+换行字符LF('\n')、UNIX/Linux下的LF和MAC下的Cr),这导致文件操作的细节不同(例如,通过fput和fprintf处理字符串的结尾)。
具体的读写实现由库函数处理,WB/RB模式一般采用缓冲区读写,最终实现对外部内存文件或其他输入/输出流的抽象(包括在内存中建立缓冲区)。在此基础上,w/R模式处理了上述一些差异。通常,缓冲区的操作取决于库函数的实现。用户无法看到库函数,因为它是不必要的(无法保证不同平台的实现是一致的)。
对于标准输入设备,如键盘,它被抽象为标准输入流stdin。除了抽象过程本身(由底层系统实现)外,实现方法与从外部存储文件读取之间没有本质区别。
⑵ C语言如何读取文件
C语言读取文件的具体步骤如下:
我们需要准备的材料分别是:电脑、C语言。
1、首先我们打开需要读取的文件,点击打开左上角文件中的“另存为”。
⑶ c语言如何读取文件并输出
c语言读取文件并输出的代码如下:
#include<stdio.h>
inta;
charb,c[100];
intmain(){
FILE*fp1=fopen("input.txt","r");//打开输入文件
FILE*fp2=fopen("output.txt","w");//打开输出文件
if(fp1==NULL||fp2==NULL){//若打开文件失败则退出
puts("不能打开文件!");
return0;
}
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);//关闭输出文件,相当于保存
return0;
}
C语言中使用fopen()函数实现文件的读取,使用fgetc()函数读取文件中的字符,使用fclose()实现文件的关闭,注意:打开文件流必须要关闭文件流,不然会持续占用计算机内存资源。
(3)c语言中读取文件扩展阅读:
fopen函数
C语言中fopen函数可以两个参数,fopen(const char *filename, const char *mode)。
第一个参数filename:这是 C 字符串,包含了要打开的文件名称。
第二个参数mode:这是 C 字符串,包含了文件访问模式。
⑷ C语言读取文件数据
先用getline或fgets读取数据到一个字符串中,这个串定义的长一点,保证够用就行,如:
char
str[1024];
fgets(
str
,
sizeof(str),
fp
);
//fp为你打开的文件指针
然后调用for循环去读取串的的数据,假设你的分隔符是空格,遍历str,遇到空格就得到一个数据,然后继续遍历,直到str尾。
然后再去fgets数据,再遍历,即可得到所有的数据。
⑸ C语言如何读取文件
文件流指针应打文件,要同操作两文件,所要用两文件流指针
,像要同操作两箱.
程序理解:
两箱,fp1,fp2;
打箱fp1,fp2,拿1024东西看,同放第二箱fp2,至箱东西完全拿,关闭两箱.
例都差,看看stdlibf函数,C文件操作:
FILL
*pf;
//声明指针,指针数组
FILE
pf[2]
或
FILE
**pf;
pf
=fopen();
fread()
or
fwrite()
...
...
//操作文件
fclose(pf)
//关闭文件
⑹ 怎么用C语言读取文件
#include
"stdio.h"
int
main()
{
FILE
*pf=NULL; //文件指针
int
filelen=0;
int
i=0;
char
*buf;
pf=fopen("D:\\test.txt","r"); //以只读方式打开文件
if(pf==NULL)
{
return
0;
}
else
{
//获得文件长度
fseek(pf,0,SEEK_END); //文件指针移到末尾
filelen=ftell(pf); //获得文件当前指针位置,即为文件长度
rewind(pf); //将文件指针移到开头,准备读取
buf=malloc(filelen+1); //新建缓冲区,存储独处的数据
//将缓冲区的数据设置为0
for(i=0;i<filelen+1;i++)
buf[i]=0;
//读取文件
fread(buf,filelen,1,pf);
//关闭文件
fclose(pf);
//buf中即为要读出的数据
printf("%s\n",buf);
//输出一下数据,你可以随便怎么用
free(buf);
//最后记得要释放
}
return
1;
}
⑺ C语言 如何一行行读文件
C语言中,使用fgets函数遍可以一行行读取文件。
1、fgets函数:
原型:char
*
fgets(char
*
buf,
int
bufsize,
FILE
*
stream);
功能:从文件结构体指针stream中读取数据,每次读取一行。
说明:读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋值为\0)。如果该行不足bufsize个字符,则读完该行就结束,如果该行超过bufsize-1个字符,则fgets只返回一个不完整的行,buf缓冲区以\0字符结束,下一次fgets调用会继续读取该行剩余的字符;
头文件:stdio.h;
返回值:若读入成功,返回与参数buf相同的字符指针,若读入过程中遇到EOF或发生错误,返回NULL指针。所以当遇到返回值为NULL的情况时,应使用ferror或feof函数检查是发生错误还是遇到EOF。
2、例程:
#include
int a;
char b,c[100];
int main(){
FILE * fp1 = fopen("input.txt", "r");//打开输入文件
FILE * fp2 = fopen("output.txt", "w");//打开输出文件
if (fp1==NULL || fp2==NULL) {//若打开文件失败则退出
puts("不能打开文件!");
rturn 0;
}
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;
}
⑻ 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 );
}
(8)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] = '