‘壹’ C语言读取文件内容,按行读
1通过fopen函数打开文本,例如file
*fp=fopen("in.txt","r");//返回一个file类型的句柄
2然后就可以通过fcanf()函数对txt文本进行读取
3操作完文本之后用fclose()函数
关闭已经打开的文件。
#include
int main()
{
int data;
file *fp=fopen("in.txt","r");
if(!fp)
{
printf("can't open file\n");
return -1;
}
while(!feof(fp))
{
fscanf(fp,"%d",&data);
printf("%4d",data);
}
printf("\n");
fclose(fp);
return 0;
}
‘贰’ 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语言字符串 按行读取
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
int main()
{
int e=0;
char pjk[80]={0},pj[80]={0},fk[80]={0},dd[80]={0};
FILE *fc,*fp;
char *psz;//[100]={0};
int len=0;
int i=0;
int j=0;
int index[5]={0};
fc=fopen("参数.txt","rb");
fp=fopen("输出.txt","wb");
fseek(fc,0L,SEEK_END);
len=ftell(fc);//得到文件长度
fseek(fc,0L,SEEK_SET);
psz=(char*)malloc(len+1);//申请内存
memset(psz,0x00,len+1);
fread(psz,len,sizeof(char),fc);//读全部文件到内存
for (i=0;i<len;i++)
{
if('\r'==psz[i])
{
psz[i]=0;//将字符串切割
}
else if ('\n'==psz[i])
{
j++;
psz[i]=0;//将字符串切割
index[j]=i+1;//获取每一行开头索引
}
else
{
dd[i]=psz[i];
}
}
strcpy(dd,psz+index[0]);
e=atoi(psz+index[1]);
strcpy(pjk,psz+index[2]);
strcpy(pj,psz+index[3]);
strcpy(fk,psz+index[4]);
free(psz);//释放内存
fprintf(fp,"%s\r\n",dd);
fprintf(fp,"%d\r\n",e);
fprintf(fp,"%s\r\n",pjk);
fprintf(fp,"%s\r\n",pj);
fprintf(fp,"%s\r\n",fk);
fclose(fc);
fclose(fp);
}
‘肆’ c语言逐行读取文件
可以使用fgets函数。
1 函数名:
fgets
2 声明:
char *fgets(char *buf, int bufsize, FILE *stream);
3 头文件:
stdio.h
4 功能:
从文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'