gpt4 book ai didi

c - 如何从 C 文本文件中读取数字 block

转载 作者:行者123 更新时间:2023-11-30 14:29:05 25 4
gpt4 key购买 nike

我有一个文件numbers.dat,其中包含大约300个列格式的数字( float ,负正数)。目标是首先用 300 个数字填充numbers.dat,然后每次提取 100 个数字到另一个文件(例如 n1.dat)中。第二个文件 n2.dat 将包含来自 number.dat 的接下来的 100 个数字,依此类推,从 number.dat 获得 3 个文件子集。我无法理解如何考虑最后读取的第 100 个数字的位置,以便在上一个提取的数字之后发生下一个 block 的文件读取和提取。

尝试 Gunner 提供的解决方案:

FILE *fp = fopen("numbers.dat","r"); 
FILE *outFile1,*outFile2,*outFile3;
int index=100;

char anum[100];
while( fscanf(fp,"%s",anum) == 1 )
{
if(index==100)
{
// select proper output file based on index.
fprintf(outFile1,"%s",anum);
index++; }
if(index >101)
{
fprintf(outFile2,"%s",anum);
index++; }
}

问题是只写入了一个数据。正确的流程应该是怎样的?

最佳答案

我会为此编写一个程序

read data from input file line-by-linekeep a line countbased on the current line count copy the line to a specific output file

something like this

#include <stdio.h>
#include <stdlib.h>

#define INPUTFILENAME "numbers.dat"
#define MAXLINELEN 1000
#define NFILES 3
#define LINESPERFILE 100
#define OUTPUTFILENAMETEMPLATE "n%d.dat" /* n1.dat, n2.dat, ... */

int main(void) {
FILE *in, *out = NULL;
char line[MAXLINELEN];
int linecount = 0;

in = fopen(INPUTFILENAME, "r");
if (!in) { perror("open input file"); exit(EXIT_FAILURE); }
do {
if (fgets(line, sizeof line, in)) {
if (linecount % LINESPERFILE == 0) {
char outname[100];
if (out) fclose(out);
sprintf(outname, OUTPUTFILENAMETEMPLATE, 1 + linecount / LINESPERFILE);
out = fopen(outname, "w");
if (!out) { perror("create output file"); exit(EXIT_FAILURE); }
}
fputs(line, out);
linecount++;
} else break;
} while (linecount < NFILES * LINESPERFILE);
fclose(in);
if (out) fclose(out);
return 0;
}

关于c - 如何从 C 文本文件中读取数字 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5270174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com