当前位置:首页 » 编程语言 » c语言读取

c语言读取

发布时间: 2022-02-05 21:42:09

c语言如何读取文件

C语言读取文件的具体步骤如下:

我们需要准备的材料分别是:电脑、C语言。

1、首先我们打开需要读取的文件,点击打开左上角文件中的“另存为”。

㈡ c语言怎样按行读取

区分读取的源,有如下两种情况:

1 从标准输入读取,即stdin。
可以使用gets函数:
char * gets(char *str);
该函数会从标准输入中读取一行数据,直到读到\n,并将\n替换为字符串结束符\0,读取到的数据以字符串形式存于str中。
需要注意的是,使用gets函数时,需要确保str指向空间大小,必须超过任意一行的长度,否则会出现越界操作。有些编译器会报gets是不安全的,就是这个原因。

2 从文件读取。
对于一个被打开的文件,如果其是可读的,那么可以通过fgets函数实现按行读取。
char *fgets(char *buf, int bufsize, FILE *fp);
功能与gets类似,只是源不同。fgets从fp中读一行数据存到buf中,同时会判断bufsize,如果一行数据的长度超过了bufsize,那么只读入bufsize长度的数据,确保不会溢出。否则读取整行。
由于在C语言中,标准输入stdin也是以文件指针形式存在的,所以gets可以用
fgets(str, bufsize, stdin);
替代,这样代码量稍多一些,但可以更安全。

㈢ C语言怎样读取文本的每一行

可以使用fgets函数来实现。

1 函数名:
fgets
2 声明形式:
char *fgets(char *buf, int bufsize, FILE *stream);
3 头文件:
stdio.h

4 功能及参数说明:
从stream中读取一行数据存到buf中。如果数据长度小于bufsize,那么读入整行数据,并将换行符转换为字符串结束符\0。 如果数据长度超过bufsize,那么只读入bufsize大小的数据,并在结尾添加\0。
5 返回值:
成功,则返回第一个参数buf;
在读字符时遇到end-of-file,则eof指示器被设置,如果还没读入任何字符就遇到这种情况,则buf保持原来的内容,返回NULL;
如果发生读入错误,error指示器被设置,返回NULL,buf的值可能被改变。

㈣ 关于c语言如何读取数据

你要读哪3位?
连着一起的3位,还是独立的3位

连一起: (val&(0x07<<n))>>n
0-2: (val&0x07)>>0
1-3: (val&0x0e)>>1
2-4: (val&0x1c)>>2
3-5: (val&0x38)>>3
4-6: (val&0x70)>>4
5-7L (val&0xe0)>>5

单独第n位:
(val&(0x1<<n))>>n

㈤ c语言读取文本文件

1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。
2、例程:

#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("不能打开文件!");
rturn0;
}
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语言读取txt

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define MAX_LINE 1024

int main()

{
char buf[MAX_LINE];

int len;

if((fp = fopen("test.txt","r")) == NULL)

{

perror("fail to read");

exit (1) ;

}
while(fgets(buf,MAX_LINE,fp) != NULL)

{
len = strlen(buf);
buf[len-1] = '\0';

printf("%s %d \n",buf,len - 1);

}

return 0;

}

㈦ C语言文件的文本怎么读取

根据你给的文件保存的数据的格式,我猜测每一行是一个学生的信息,格式如下:

序号 姓名 成绩1 成绩2 成绩3 ...

知道了题意和题目要求,那么一切将会变得简单起来,请看代码。

#include<stdio.h>

#defineREAD_FILE"data.txt"/*要读取的文件的名字*/
#defineWRITE_FILE"T_data.txt"/*要写入的文件的名字*/
#defineSTU_NUM10/*最大学生人数*/
#defineMAX_LEN50/*一行的最大字符数*/
/*
*获取总分函数
*/
intget_sum(charconst*msg){

intsum=0;
inttmp;
/*
*遍历一行字符
*/
while(*msg!=''){

/*
*以空格为一项成绩的分隔标志
*/
tmp=0;
while(*msg!=''&&*msg!=''){
/*
*char类型数字转int类型数字
*/
tmp=(tmp*10)+((*msg)-'0');
msg++;
}
/*
*求总和
*/
sum+=tmp;
if(*msg==''){

break;
}
msg++;
}
returnsum;
}

intmain(void){

FILE*rfp,*wfp;/*声明读取/写入文件指针*/
charstudent[STU_NUM][MAX_LEN];/*存放读取到的数据缓存数组*/
charch;
intsum[STU_NUM];/*成绩总和*/
inti=0;
intj=0;
intk=0;
rfp=fopen(READ_FILE,"r");/*打开数据文件*/
if(rfp==NULL){

perror(READ_FILE);
exit(1);
}
for(i=0;i<STU_NUM;i++){

sum[i]=0;
}
/*
*逐个字符读取文件的内容,
*直至遇到文件结束符为止。
*/
i=0;
while((ch=fgetc(rfp))!=EOF){
/*
*遇到换行符表示已经读取完一个学生的资料;
*否则继续将数据写入缓存数组中。
*/
if(ch==' '){

student[i][j]='';
j=0;
i+=1;
}else{

student[i][j++]=ch;
}
}
student[i][j]='';
wfp=fopen(WRITE_FILE,"w");
/*
*开始分析数据
*根据文件存放数据的格式,从下标为2的位置开始分析数据。
*当遇到空格时证明后面的数据是成绩,每一科成绩分数均以空格分开。
*printf是显示出来。
*fprintf是写入另一个文件。
*/
for(j=0;j<=i;j++){

k=2;
printf("%c%c",student[j][0],student[j][1]);
fprintf(wfp,"%c%c",student[j][0],student[j][1]);
while(student[j][k]!=''){

printf("%c",student[j][k]);
fprintf(wfp,"%c",student[j][k]);
k++;
}
printf("'ssumofscoresumis");
fprintf(wfp,"'ssumofscoresumis");
sum[j]=get_sum(&student[j][k]);
printf("%d ",sum[j]);
fprintf(wfp,"%d ",sum[j]);
}
/*
*记得关闭文件哦。
*/
fclose(rfp);
fclose(wfp);
return0;
}

以下是运行结果:

这个程序仅仅是针对你的题目要求来的,文件存放的数据格式不能更改,否则会出错。每一行必须以回车键结束,最后一行的最后一个字符之后什么也不能有。我尽量以你看得懂的方法来写,关键部分都带有注释,有问题不要追问了,自己多思考思考,实在解决不来还是很欢迎可以追问的哦,哈哈哈!!!

㈧ C语言文件读取

你好!!
fscanf 函数,读文件的时候,是遇到空格结束一次读取的,你文件每行记录不确定;

不能批量格式读取了,只能采用每次读取一个的方式完成!

㈨ c语言从文件读取数据

四个整型 一个浮点型, 所以 用数组的话 只能是用浮点型数组, 即float a[5];

或者用五个变量, 可以是四个整型,一个浮点型. int a,b,d,e; float c;

打开文件部分相同.

FILE*fp=fopen("input1.txt","r");

读取数据, 数组方式:

inti;
floata[5];
fscanf(fp,"%f,",&a[0]);
for(i=1;i<5;i++)
fscanf(fp,"%f",&a[i]);

变量方式:

inta,b,d,e;
floatc;
fscanf(fp,"%d,%d%f%d%d",&a,&b,&c,&d,&e);

㈩ C语言中 文件的读取

示例程序。

//---------------------------------------------------------------------------

#include <stdio.h>

int main(void)
{
FILE *fp;
double u[20];
int i;

fp=fopen("c:\\a.txt","r"); /*打开要读取数字的文件*/
for (i = 0; i<20; i++) { /*打开的从文件中读取20个数字*/
fscanf(fp,"%lf",&u[i]); /*从fp文件读取一个double类型的数字保存到数组u中,fscanf()函数除了第一个参数是文件指针外,其余的用法和scanf()函数一致,所以这里的格式控制字符串要求文件中的数字要用空格或者回车分隔*/
printf("%f\t",u[i]); /*输出刚读取的数字*/
}
fclose(fp); /*关闭文件*/
return 0;
}
//---------------------------------------------------------------------------

热点内容
我的世界创造房子服务器 发布:2024-05-20 06:48:36 浏览:816
小米笔记本存储不够 发布:2024-05-20 06:32:53 浏览:783
dirt5需要什么配置 发布:2024-05-20 06:02:58 浏览:542
怎么把电脑锁上密码 发布:2024-05-20 05:19:09 浏览:985
安卓为什么连上wifi后没有网络 发布:2024-05-20 05:17:50 浏览:419
安卓usb在设置哪里 发布:2024-05-20 05:03:03 浏览:187
绥化编程 发布:2024-05-20 04:59:44 浏览:991
基本原理和从头计算法 发布:2024-05-20 04:50:32 浏览:30
配置情况指的是什么 发布:2024-05-20 04:48:14 浏览:497
那个程序用来编译源文件 发布:2024-05-20 04:46:45 浏览:551