C语言结构体数组读取带逗号的文件,文件如下,按行读,结构体M有char *a,float b,float c.怎么读建立M?

qingmeisu, 230, 2330
lianmeisu, 250, 3350
kanameisu, 350, 4460
huangliansu, 333, 5567
tumeisu, 555, 6666
Abacavir, 222, 2222
Abarelix, 333, 3333
Abatacept, 444,4444
Abciximab, 555, 5555
Abelcet, 666, 6666
Abilify, 777, 7777
Abiraterone, 888, 8888
Ablavar, 999, 9999
Abobotulinumtoxin, 111, 2222
Abraxane, 222,3333
Absorica, 333, 4444
Abstral, 444, 5555
Acamprosate, 555, 6666
Acarbose, 666, 7777
Accolate, 777, 8888
Accretropin, 888, 9999
AccuNeb, 123, 4567
Accupril, 234, 5678
Accuretic, 324, 4321
Accutane, 987, 9870
Accuzyme, 876, 8760
Accuzyme, 765, 7650
Acebutolol, 654, 6540
Aceon, 543, 5430
Acetadote, 963, 9630
Acetaminophen, 951, 9510
Acetazolamide, 753, 7530
Acidul, 825, 8250
Aciphex, 756, 7560

第1个回答  2013-04-08

结构体数组解决方案如下:

#include <stdio.h>
#include <string.h>
struct M
{
char a[100];
float b;
float c;
} list[100];
int main()
{
FILE *fp = fopen("/tmp/1.txt", "r");
char buff[1024] = {0};
int i = 0;
while (NULL != fgets(buff, 1024, fp))
{
bzero(&list[i], sizeof(struct M));
sscanf(buff, "%[^,],%f,%f", list[i].a, &list[i].b, &list[i].c);
i++;
bzero(buff, 1024);
}

return 0;
}

本回答被网友采纳
第2个回答  2013-04-08
struct m
{
char * a;
float b;
float c;
typedef struct m * pnext;
};

 

 

定义成单链表就可以。

相似回答