将.csv文件的值传递给结构向量
我有我的结构,我有这个结构的向量。此外,我还有一个.csv文件,其中的数据用逗号分隔 我需要做的是获取.csv文件每一行的每个值,并将其放入我的结构向量中。每行对应一个不同的向量索引 File.csv模型将.csv文件的值传递给结构向量,c,file,csv,struct,C,File,Csv,Struct,我有我的结构,我有这个结构的向量。此外,我还有一个.csv文件,其中的数据用逗号分隔 我需要做的是获取.csv文件每一行的每个值,并将其放入我的结构向量中。每行对应一个不同的向量索引 File.csv模型 1,carlos,1232 321,patricia,212 5,james riko,23432 同一通道中的字段数量可能会有所不同,但始终仅用逗号分隔 我使用strok()做了一些事情,但是我找不到一种方法来填充结构 我的代码: typedef struct{ int num_acc;
1,carlos,1232
321,patricia,212
5,james riko,23432
同一通道中的字段数量可能会有所不同,但始终仅用逗号分隔
我使用strok()做了一些事情,但是我找不到一种方法来填充结构
我的代码:
typedef struct{
int num_acc;
char name[25];
double value;
}struct_acc;
int main(){
FILE *arq_acc;
struct_acc acc[3];
char buffer[256];
char *pointer;
arq_acc = fopen("accs.csv", "r");
if(arq_acc == NULL){
printf("Error"); exit(0);}
while(pointer = fgets(buffer, sizeof(buffer), arq_acc) ){
char *token;
while( (token = strtok(pointer, ",") != NULL){
//Then I don't know how to fill the struct vector.
}
return 0;
}
我只是粘贴了我的旧代码,以向您显示我实际上正在尝试执行某些操作。我找不到一种方法来做我需要的事情,所以我可以得到完全不同的代码想法来达到我的目标 在旧代码中,我需要重新启动循环以更改为当前通道的下一个值,然后我无法添加类似以下内容:
while( (token = strtok(pointer, ",") ) != NULL ){
acc[0].num_acc = token;
// Now I need to set pointer as NULL and read the token again, to get the next value of the first row. But I can't do it like this. ;\
}
由于文件中的数据是统一的,因此可以使用
sscanf
。跟踪指示要填充数组中哪个帐户的索引
sscanf(buffer, "%d,%24[^,],%lf",
&(acc[index].num_acc),
acc[index].name,
&(acc[index].value));
由于文件中的数据是统一的,因此可以使用
sscanf
。跟踪指示要填充数组中哪个帐户的索引
sscanf(buffer, "%d,%24[^,],%lf",
&(acc[index].num_acc),
acc[index].name,
&(acc[index].value));
由于文件中的数据是统一的,因此可以使用
sscanf
。跟踪指示要填充数组中哪个帐户的索引
sscanf(buffer, "%d,%24[^,],%lf",
&(acc[index].num_acc),
acc[index].name,
&(acc[index].value));
由于文件中的数据是统一的,因此可以使用
sscanf
。跟踪指示要填充数组中哪个帐户的索引
sscanf(buffer, "%d,%24[^,],%lf",
&(acc[index].num_acc),
acc[index].name,
&(acc[index].value));
在获取每个逗号分隔的值之前,首先需要使用
strtok
获取每一行。如果csv中始终有三列,则可以像本例中那样进行操作:(我太累了,无法写出一个好的答案-因此使用了pastebin;)在获取每个逗号分隔的值之前,首先需要使用strtok
获取每一行。如果csv中始终有三列,则可以像本例中那样进行操作:(我太累了,无法写出一个好的答案-因此使用了pastebin;)在获取每个逗号分隔的值之前,首先需要使用strtok
获取每一行。如果csv中始终有三列,则可以像本例中那样进行操作:(我太累了,无法写出一个好的答案-因此使用了pastebin;)在获取每个逗号分隔的值之前,首先需要使用strtok
获取每一行。如果csv中始终有三列,则可以像本例中那样进行操作:(我太累了,无法写出一个好的答案-因此使用了pastebin;)