Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将.csv文件的值传递给结构向量_C_File_Csv_Struct - Fatal编程技术网

将.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;

我有我的结构,我有这个结构的向量。此外,我还有一个.csv文件,其中的数据用逗号分隔

我需要做的是获取.csv文件每一行的每个值,并将其放入我的结构向量中。每行对应一个不同的向量索引

File.csv模型

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;)