【发布时间】:2014-02-11 10:24:26
【问题描述】:
我正在尝试将 int 作为值插入到 gtree,它来自 glib。我不知道我应该如何分配和插入它。在这里你可以看到我的尝试:
void readFilec(GTree *tree)
{
FILE *fp = fopen("cfg/file.csv", "rb" );
char * line = NULL;
size_t len = 0;
ssize_t read;
if (fp == NULL)
exit(EXIT_FAILURE);
char *p1;
int p2;
while ((read = getline(&line, &len, fp)) != -1)
{
printf("%s", line);
p1 = strtok(line, "|");
p2 = (int)atoi(strtok(NULL, "|"));
g_tree_insert(tree,(gpointer *) g_strdup(p1), (gpointer *) p2);
printf("-%s%d ", p1, p2);
}
if (line)
free(line);
//exit(EXIT_SUCCESS);
}
我读到的文件是这样的:
cfg/file.csv
AA1.E|1
AA2.E|2
【问题讨论】:
-
形成你为
|创建的文件strtok(),但它在你的代码中似乎有两次,而在文件中它是一个。所以它也不正确,你可以传递char。 -
@JKB 应该怎么写?
-
p1 = strtok(line, "|");是对的,但第二个可能是p2 = (int)atoi(strtok(NULL, " "));。否则插入的值错误。