C 从不同大小的整数强制转换为指针
我试图将int作为值插入C 从不同大小的整数强制转换为指针,c,glib,C,Glib,我试图将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;
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
尝试删除gpointer后面的*,因为它已经是空的*,并在p2前面添加“&”以获取其地址
g_tree_insert(tree,(gpointer)g_strdup(p1),(gpointer)和p2);
形成您为|
创建的strok()文件,但它在代码中似乎出现了两次,而在文件中却是一次。因此它也不正确。您可以传递char@JKB,它应该如何编写?p1=strok(第,“|”行)
是正确的,但第二个可能是p2=(int)atoi(strtok(NULL)(“”)代码>。否则插入错误的值。