【发布时间】:2017-05-21 17:01:32
【问题描述】:
我正在孩子之间传递值,需要存储一些值以供以后使用。
函数中的定义和使用
char fouts[MAX_SIZE][10];
我给数组赋值的函数:
void connect(char *nodo, char *out[], int nouts) {
(...)
for(i=0;i<nouts;i++) {
fouts[fnum][i] = out[i];
}
(...)
以及我尝试使用它们的功能:
void disconnect(char *nodo, char *remover){
char *outs[10];
nouts = fnouts[getfnum];
int m =0;
for(i=0;i<nouts;i++) {
if(strcmp(fouts[getfnum][i],nodo) != 0) { outs[m] = fouts[getfnum][i]; m++ ; }
}
无论我每次尝试最后执行此操作时都尝试修复它,它都会产生分段错误。
已经尝试过(例如直接读取 fouts[getfnum][0] 并给出分段错误,但 fouts[getfnum] 给出“垃圾”) 检查赋值后的值 fouts[fnum][i] = out[i];在这里,它检查出来了,所以我想那部分没问题)。
不知道它是否明显,但有什么帮助吗?
【问题讨论】:
-
你通过nouts来连接而不是断开连接。断开连接如何得到nouts?
-
不知道是不是有问题,
char *outs[10]是一个指向 10 个元素的数组的指针,但是你在写入之前从来没有分配过指针?如前所述,不知道这是否会导致任何问题。 -
@L.ScottJohnson 忘记在此处包含,但我得到了价值。编辑并添加了
-
@LudvigRydahl 我想这不是问题所在,因为例如,当我尝试执行 printf("%s",fouts[getfnum][0]);我遇到了分段错误。
-
fouts[fnum][i]是char但您将其分配给out[i]即char*
标签: c arrays multidimensional-array