當前位置:首頁 » 編程語言 » 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);
}