gpt4 book ai didi

从 CSV 数据构建 C 数组

转载 作者:行者123 更新时间:2023-11-30 15:24:10 25 4
gpt4 key购买 nike

因此,我正在尝试构建一个 C 程序,以便能够读取星表并将其存储在数组中以供进一步分析。

明星目录通常采用.csv格式,并且包含大量数据,而且一些插槽是空的并且并非所有插槽都有int、double或float类型数据强>.

我希望这个程序能够读取“任何”星表(或者任何 .csv 文件)。

我构建此类程序的第一个方法遇到了数组必须声明其大小的问题,我决定通过创建行和列计数器函数来绕过这个问题,并由 main 函数实现。

int* getfield(char* line){
FILE *fp = fopen("./hipparcos.csv", "r");
int ch;
int lines=0;
do{
ch = fgetc(fp);
if( ch== '\n'){
lines++;
}
}while( ch != EOF );

printf("number of lines in the file %d\n",lines);
return lines;
}

在像这样的主函数中实现时效果很好 getfield("\n"); 所以我可以看到它在终端中读取了多少行(因此知道它正在对它们进行计数不知何故)。

我需要的是知道如何将该数量存储为变量以便稍后声明数组大小并在每个位置存储行,也许之后执行行分割(并将每行分成每一列)。

任何有关如何进行或更有效方法的见解都将受到赞赏。

最佳答案

您只返回 int 值,因此将函数头更改为

int getfield(char* line){

这不应该是一个指针。

还要考虑文件最后一行末尾不存在 '\n' 的可能性(在这种情况下,结果将小于行数 1)。

编辑:

如果您只想将行数计算为 '\n' 字符数,则更改函数如下:

int getCharCount(char chr){
FILE *fp = fopen("./hipparcos.csv", "r");
int ch;
int lines = 0;
do{
ch = fgetc(fp);
if( ch == chr){
lines++;
}
}while( ch != EOF );
fclose(fp);
return lines;
}

您可以从main()调用它,例如:

    printf("number of lines in the file %d\n", getCharCount('\n')); // maybe +1 needed :-)

但我知道这是您的程序的草稿,因此请考虑将文件名作为参数发送给您的函数。这使您的解决方案更加灵活。

关于从 CSV 数据构建 C 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28528627/

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