我目前正在尝试将.csv文件读入C中的数组中。我对如何处理问题有点不知所措。 我浏览过许多论坛和相关主题,但我仍然无法掌握它。 如果有人可以向我展示或尽可能简单地分解它。 非常感谢。 顺便说一句,.csv文件的内容是这样的。 数组应该只包含字母和数字。 我在考虑使用2-Darrays。 这是一个合适的解决方案?
A,1 B,2 C,3 ....
首先定义数据结构:
struct my_record { char name; int value; };
然后你可以这样读:
FILE* my_file = fopen(...); struct my_record records[100]; size_t count = 0; for (; count < sizeof(records)/sizeof(records[0]); ++count) { int got = fscanf(my_file, "%c,%d", &records[count].name, &records[count].value); if (got != 2) break; // wrong number of tokens - maybe end of file } fclose(my_file);
现在你有一个1D结构数组,每行一个。
您可以创建一个结构数组,如另一个答案所述。
一旦你有struct
定义:
typedef struct { char letter; int number; } record_t;
然后你可以像这样创建一个结构数组:
record_t records[26]; /* 26 letters in alphabet, can be anything you want */
使用2D数组是不必要的,因为在struct
包装字母和数字会更容易处理。
在读取文件方面,您只需使用fscanf()
读取,直到找不到2
值。
以下是您可以使用的一些基本代码:
#include #include #define NUMLETTERS 26 typedef struct { char letter; int number; } record_t; int main(void) { FILE *fp; record_t records[NUMLETTERS]; size_t count = 0; fp = fopen("letters.csv", "r"); if (fp == NULL) { fprintf(stderr, "Error reading filen"); return 1; } while (fscanf(fp, " %c,%d", &records[count].letter, &records[count].number) == 2) { count++; } for (size_t i = 0; i < count; i++) { printf("%c,%dn", records[i].letter, records[i].number); } fclose(fp); return 0; }
以上就是c/c++开发分享将.csv文件读入C中的数组相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/550027.html