当前位置:首页 » 编程语言 » c语言文件依次读取
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言文件依次读取

发布时间: 2022-08-22 07:31:41

c语言中由用户给出一个文件夹,如何依次打开文件夹中的每个文件

if((dir=
opendir(command))
==
NULL)
{
printf
(
"%s:
can
not
open.",
__func__
);
return
-1;
}
else
{
while((s_dir=readdir(dir))!=NULL)
{
if(strncmp(s_dir->d_name,".",1)==0
||
strncmp(s_dir->d_name,"..",1)==0)
//linux系统的话会默认有一个.和..文件
{
continue;
}
sprintf(currpath,
"%s/%s/user",command,s_dir->d_name);
readValue
(
currpath,
buf,
sizeof(buf));

② c语言 读写文件时怎么样一次读取几行,然后再几行几行的往下读取

用循环语句,一次读几行。
用双重循环语句,就可以再几行几行地读。
例如:
#include <stdio.h>
#include <stdlib.h>
FILE *fin;
main(){
char s[20][200];
int i,j;
fin=fopen("abc.txt","r"); // 打开文件
for (i=0;i<4;i++) fgets(s[i],200,fin); // 以字符串形式 读4行
for (i=0;i<4;i++) printf("%s\n",s[i]); // 打印这4行
for (j=1;j<=4;j++) //循环4次,每次读4行
for (i=0;i<4;i++) fgets(s[j*4+i],200,fin);
return 0;
}
如果不是字符串,而是数据,那么根据文件里数据写法,一行有多少个数,也可以通过循环实现。
如果更复杂:每行有数,有字符串,个数不定,同样可以通过循环实现,只是读时 要检查测定是否遇到 '\n' 了,遇到 '\n'就是 一行。
写文件也是一样,可以循环,行结束就输出一个 '\n'.

③ 标准C语言中如何一次读取某文件中的多行数据

有很多种方式可以一次性读取多行数据,具体如何使用,取决于文件内容格式。
一、以fscanf读取。
fscanf读取时,默认会到空白字符截止。所以如果文件中不存在其它空白字符,那么可以以fscanf实现一次性读取多行的效果,比如文件中存储
1
2.3
name那么要一次版性读取这三行数权据,可以使用:
int a;
float b;
char c[20];
fscanf(fp, "%d%f%s",&a,&b,c);其中,fp为打开该文件的文件指针,
分别将三行数据读取到三个变量a
b
c中。
二、以fread读取。
fread可以一次性读取若干个数据块,所以如果要读取的文件内容总长度已知,那么可以通过fread一次性读取多行。如
this is
for
my test
only.以上数据分4行,包括换行符在内共计25字节。
此时可以使用如下代码一次性读取四行:
char buf[100];
fread(buf, 25, 1, fp);其中fp为打开该文件的文件指针。

④ C语言编程求助,怎么从一个文本文件中依次读取其中的每行,并做处理

如果定义二维数组,可以这样做:

char *[100]; // 定义最多100行

char *tmp;
FILE *fp;
int index=0;
fp=fopen(file_name,"r");
while((tmp=fgets(fp))!=EOF){
//处理tmp值,切记tmp是没有开辟空间,如果需要保存处理的结果需要定义开辟空间的变量

// do_()

[index] = (char *)malloc(100); //限制每行最多100个字符存储空间
strcpy([index],tmp);
index++;
}

⑤ c语言逐行读取文件

可以使用fgets函数。

1 函数名:

fgets

2 声明:

char *fgets(char *buf, int bufsize, FILE *stream);

3 头文件:

stdio.h

4 功能:

从文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋''),如果文件中的该行,不足bufsize个字符,则读完该行就结束。如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。


5 参数:

*buf:字符型指针,指向用来存储所得数据的地址。

bufsize:整型数据,指明存储数据的大小。

*stream:文件结构体指针,将要读取的文件流。


6 返回值:

成功,则返回第一个参数buf;

在读字符时遇到end-of-file(文件结尾),则eof指示器被设置,如果还没读入任何字符就遇到这种情况,则buf保持原来的内容,返回NULL;

如果发生读入错误,error指示器被设置,返回NULL,buf的值可能被改变。


7 示例代码:

逐行读取in.txt中的数据,并打印。每行不超过100个字符。

intmain()
{
FILE*fp;
charbuf[101];
fp=fopen("in.txt","r");//打开文件
while(fgets(buf,sizeof(buf),fp))//每次读取一行数据,直到读取失败。
{
printf("%s ",buf);//打印该行。
}
fclose(fp);//关闭文件。

return0;
}

⑥ 从文本文件里读取数字,c语言如何实现

voidmain()

{

FILE*fin;

inta,b,c,d;

chars[20];

floatf1,f2,f3,f4;

fin=fopen("abc.txt","r");//打开

fscanf(fin,"%1d%1d%1d%1d",&a,&b,&c,&d);//按1位整型读前4个数

printf("a=%db=%dc=%dd=%d ",a,b,c,d);

rewind(fin);//文件回绕到开始处

fscanf(fin,"%s",s);//按字符串读一串

printf("s=%s ",s);

rewind(fin);//文件回绕到开始处

fscanf(fin,"%1f%1f%1f%1f",&f1,&f2,&f3,&f4);//按1位float型读前4个数

printf("%f%f%f%f ",f1,f2,f3,f4);

flcose(fin);

}

abc.txt内容:

123456789

读到数组:

inty[20];

inti;

fin=fopen("abc.txt","r");

for(i=0;i<9;i++)fscanf(fin,"%1d",&y[i]);

(6)c语言文件依次读取扩展阅读

C语言中文件的读取

fopen(打开文件)

相关函数open,fclose

表头文件#include<stdio.h>

定义函数FILE*fopen(constchar*path,constchar*mode);

函数说明参数路径包含包含打开的文件路径和文件名,参数模式字符串则代表着流形态。

模式有以下几种形态类别:

r:预期文件,该文件必须存在。

r+:可读写的文件,该文件必须存在。

w:只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

w+:可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

a以附加的方式打开只写文件。若文件不存在,则建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。

⑦ 关于C语言中文本文件的逐行读取的实现

#include
<stdio.h>
int
ReadData(void)
{
unsigned
int
rc,
i,
get;
/*get为读取一个字节*/
FILE
*fp;
fp
=
fopen("helloworld.txt",
"r+");
if
(fp
==
NULL)
{
return
-1;
/*打开文件失败返回-1*/
}
rc=0;
i=0;
while
((get
=
fgetc(fp))
!=
EOF)
{
if((char)get
==
'\n')
/*记录换行符*/
{
rc
=
ftell(fp);
i++;
}
rc++;
}
return
i;
}
int
main()
{
int
row;
row
=
ReadData();
printf("Row
=
%d\n",
row);
/*打印文件行数*/
return
0;
}

⑧ C语言问题 怎样从一个文件中逐个读入字符(每次读入一个)

charstr[1024];

inti=0;

while((str[i]=getchar())!=' ')

i++;

getchar();

(8)c语言文件依次读取扩展阅读

C语言读取一个文件的字符:

#include<stdio.h>

intmain(void)

{

FILE*stream;

errno_terr;

//Openforread(willfailiffile"crt_fopen_s.c"doesnotexist)

err=fopen_s(&stream,"crt_fopen_s.c","r");

if(err==0)

printf("Thefile'crt_fopen_s.c'wasopened ");

else

printf("Thefile'crt_fopen_s.c'wasnotopened ");

}

⑨ 如何用C语言循环读取文件内容

  1. 循环读取一个文件的内容。

    这样做没有任何意义,不如把读取的内容保持在变量当中,节省空间时间。如果非要反复读取的话可以使用rewind函数把文件指针重置。

    函数名: rewind()
    功 能: 将文件内部的位置指针重新指向一个流(数据流/文件)的开头
    注意:不是文件指针而是文件内部的位置指针,随着对文件的读写文件的位置指针(指向当前读写字节)向后移动。而文件指针是指向整个文件,如果不重新赋值文件指针不会改变。rewind函数作用等同于 (void)fseek(stream, 0L, SEEK_SET);

  2. 循环读取多个文件的内容。

    把多个文件名存在一个字符串数组当中。使用循环语句反复打开-读取-关闭即可。

    例如:

    char*s[3]={"文件一","文件二","文件三"};
    for(i=0;i<3;i++){
    f=fopen(s[i]);//打开第i个文件
    //读取数据
    fclose(f);//关闭文件
    }