gpt4 book ai didi

c - 从文件中读取到c中的数组

转载 作者:太空宇宙 更新时间:2023-11-04 04:08:24 25 4
gpt4 key购买 nike

我的文件包含一系列数字(整数、 float 、整数、 float ......),每个数字都写在单独的一行上。每一行的列数不同,即

1 2.45 3 1.75

5 3.45 7 2.55 9 3.25

6 1.75 4 3.55 6 2.55 9 2.45

程序应该读取整个文件的内容并将数据放入一个浮点类型的数组中,每行都有一个条目。这是我的基本解决方案,但这仅适用于我没有固定列数的情况。

float Read(FILE *pFile)
{
char line[50]; char letter[5];
fi = fopen("file.txt", "r");

while (fgets(line,200,fi)!=NULL)
{

sscanf(line,"%f %f %f",&a[i], &a2[i],&a3[i]);
printf("%2.0f %2.5f %2.0f\n",a[i],a2[i],a3[i]);
}

fclose(fi);
return a[i];
}

请帮助。

最佳答案

使用这样的东西。如果您想要可重入代码,请参阅 man strtok_r

#define MAX_BUFFER 200

float Read(FILE* pFile)
{
char line[MAX_BUFFER];

while(fgets(line, MAX_BUFFER, pFile) != NULL)
{
char* ptr = strtok(line, " ");

while(ptr != NULL)
{
printf("2.5f ", (float)atof(ptr));
ptr = strtok(NULL, " ");
}

printf("\n");
}
}

注意你写了line[50]但是在fgets()中读到了200,也就是一个潜在的缓冲区溢出。'i' 甚至没有声明,也从未使用过 pFile。

关于c - 从文件中读取到c中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2934785/

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