【发布时间】:2015-05-29 20:07:26
【问题描述】:
我正在尝试在 struct nodo; 中填充 char *info
这是结构:
struct nodo {
char *info;
struct nodo *prec;
struct nodo *succ;
};
typedef struct nodo nodo;
这是整个功能:
nodo *q,*t = NULL,*head = NULL;
int i, nodi=0 ;
char *c = a, *k = a;
while ( *c != '\0') {
if (*c == ' ')
nodi++;
c++;
}
for (i = 0; nodi != 0; i++) {
if (i == 0){
head = CreateFirstNodo();
t = head;}
if (i == 1)
q = CreateSecondNodo(head);
else
q = CreateNNodo(head);
nodi--;
}
char *k = a;
int i = 0;
while ( *k != '\0' )
{
if (*k == ' ' )
{
head = head->succ;
i = 0;
}
head->info[i] = *k; // ERROR EXC BAD ACCESS
i++;
k++;
}
return t;
}
k 是一个char*,应该滚动分配给它的char[],并将他的任何值复制到head->info[i] 中的适当位置,即char *info in struct
如果k 击中一个空格,则节点转到下一个节点,并且“i”再次变为 0,因为i 需要在每个节点中填写一个单词。
但此代码在标记行中显示错误 EXC BAD ACCESS。
这里有 3 个 CreateNodo 函数:
nodo *CreateFirstNodo() {
nodo *q;
q = malloc(sizeof(nodo));
q->prec = NULL;
q->succ = NULL;
return q;
}
nodo *CreateSecondNodo(nodo *head) {
nodo *q;
q = malloc(sizeof(nodo));
q->succ = NULL;
q->prec = head;
head->succ = q;
return q;
}
nodo *CreateNNodo(nodo *head) {
nodo *q;
while (head->succ != NULL) {
head = head ->succ;
}
q = malloc(sizeof(nodo));
q->succ = NULL;
q->prec = head;
head->succ = q;
return q;
编辑:抱歉缺少代码。
【问题讨论】:
-
定义在哪里?
-
请告诉我们
struct head,虽然我猜head->info不是char **类型或定义为char * info[N]。 -
与提供的相比,missing的代码可以准确地帮助解决这个问题。请生成一个包含所有相关部分的MCVE,以便我们重现您所看到的内容。
-
显示
struct,你如何声明info? -
我猜你是意大利人,
struct nodo定义了某个链接树或链结构中的一个节点,但是搜索会引发许多不同的问题,例如struct nodos:你真的_必须_ 告诉我们你的定义是什么。正如@WhozCraig 所说,我们需要proper code example (MVCE),然后我们可以为您提供帮助。
标签: c list pointers struct char