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

c语言循环读取大文件

发布时间: 2023-02-10 18:45:07

A. 如何用c语言高效的读取一个很大的txt数据文件

#include <stdio.h>
#include <string.h>

#define MAXSIZE 4000000

struct password {
char psw[12]; // 密码名称
int counter; // 出现次数计数器
};

int Append(struct password a[], int *n, char psw[]) {
int i;
for(i = 0; i < *n; ++i) {
if(strcmp(a[i].psw,psw) == 0) {
++a[i].counter;
return 2;
}
}
if(*n < MAXSIZE) {
strcpy(a[*n].psw,psw);
a[*n].counter = 1;
++(*n);
return 1;
}
return 0;
}

int main() {
struct password a[MAXSIZE];
char psw[12];
int i,n = 0,id;
char infilename[] = "indata.txt";
char outfilename[] = "outdata.txt";
FILE *inf,*outf;
if((inf = fopen(infilename,"rt")) == NULL) {
printf("不能打开数据文件:%s。\n",infilename);
return 1;
}
while(fscanf(inf,"%d %11s",&id,psw) == 2) {
if(Append(a,&n,psw) == 0) break;
}
fclose(inf);
if((outf = fopen(outfilename,"wt")) == NULL) {
printf("不能打开数据文件:%s。\n",outfilename);
return 2;
}
for(i = 0; i < n; ++i)
fprintf(outf,"%s %d\n",a[i].psw,a[i].counter);
fclose(outf);
return 0;
}
估计可能是数组越界,修改如下:
int Append(struct password a[], int *n, char psw[]) {
int i;
for(i = 0; i < *n && i < MAXSIZE; ++i) {
if(strcmp(a[i].psw,psw) == 0) {
++a[i].counter;
return 2;
}
}
if(*n < MAXSIZE) {
strcpy(a[*n].psw,psw);
a[*n].counter = 1;
++(*n);
return 1;
}
return 0;
}

B. C语言中,如何实现从文件中读取数据(大量的数据)后,在循环体中使用,每次传递3个值到数组。

假定文本文件,全部是 int 数据,空格 分隔。
FILE *fp;
int i =0, n;
fp = fopen("jsz.txt","r"); //打开文件,用来读。
if (!fp) { ......打开失败 的 处理 };
while(1){
fscanf(fp,"%d %d %d", &a[i], &a[i+1],&a[i+2]);
if ( feof(fp) ) break; // 文件终了判断
i=i+3; // 下3个的 起始元素下标
}
fclose(fp); // 关闭文件

C. C语言读取文件数据

先用getline或fgets读取数据到一个字符串中,这个串定义的长一点,保证够用就行。

举例:

char str[1024]。

fgets( str , sizeof(str), fp ),//fp打开的文件指针。

然后调用for循环去读取串的的数据,假设你的分隔符是空格,遍历str,遇到空格就得到一个数据,然后继续遍历,直到str尾。

再去fgets数据,再遍历,即可得到所有的数据。

拓展资料:

C语言是一门通用计算机编程语言,广泛应用于底层开发。

C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

D. C语言读取csv大文件以及结果的存储问题

你用C还是C++,MFC有文本库的,若用C,处理汉字较困难
可以一次读完文件,再处理
不定长度的数据用数组,动态内存分配都可以,反正现在内存大小应该不是问题

E. C语言读大文件问题

如果是文本文件的格式,而且你的文件有很大肯定不能随机读取的,所以使用任何编程语言都需要很长的时间。
如果是有固定的记录格式,则可以使用fseek定位文件指针随机读写

F. c语言读取txt文件多行数据

#include<stdio.h>
#defineMAX_LINE1024 //每行最大字节数

intmain()
{
intn=0;
FILE*fp;
charstrLine[MAX_LINE]; //读取缓冲区
if((fp=fopen("result.txt","r"))==NULL) //判断文件是否存在及可读
{
printf("OpenFalied!");
return-1;
}
while(!feof(fp)) //循环读取每一行,直到文件尾
{
fgets(strLine,MAX_LINE,fp); //将fp所指向的文件一行内容读到strLine缓冲区
printf("%s",strLine); //输出所读到的内容
//DOSOMETHINGELSE
}
fclose(fp); //关闭文件
printf(" ");
return0;
}

用一维数组存的,如果需要用二维数组则用制表符‘ ’拆分就好了。

G. c语言实现文件读取与写入

楼下这个人真的装,不会就算了还在这水,你还是去打斗地主吧!
这个题简单,用fgetc函数直接进行循环写入就行了,话说贴主是湖工大的吧?这是实训题,你还是自己打一下吧,下面是参考答案:
#include<stdlib.h>
#include<stdio.h>
void solve(){
FILE *fp1,*fp2;
fp1=fopen("a.txt","r");
fp2=fopen("b.txt","w");
char c;
c=fgetc(fp1);
while(c!=EOF)
{
fputc(c,fp2);
c=fgetc(fp1);
}
fclose(fp1);
fclose(fp2);
}