Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 结构数组奇怪的输出?_C_Arrays_Struct - Fatal编程技术网

C 结构数组奇怪的输出?

C 结构数组奇怪的输出?,c,arrays,struct,C,Arrays,Struct,有人能告诉我为什么结构数组不能正确打印吗 我想这与我分配给结构的内存有关,我不确定 使用mac osx mountain lion xcode 4 gcc 谢谢你的帮助,完全卡住了!! (请耐心点,我只是个学生!) #包括 #包括 #包括 #包括 #包括 #包括 #包括 类型定义结构{ 字符*1; 字符*2; }节点; 节点*节点; 整数计数=0; //-----------------------------------------------------------------------

有人能告诉我为什么结构数组不能正确打印吗

我想这与我分配给结构的内存有关,我不确定

使用mac osx mountain lion xcode 4 gcc

谢谢你的帮助,完全卡住了!! (请耐心点,我只是个学生!)

#包括
#包括
#包括
#包括
#包括
#包括
#包括
类型定义结构{
字符*1;
字符*2;
}节点;
节点*节点;
整数计数=0;
//-----------------------------------------------------------------------
无效添加(字符*1,字符*2){
charx[40];
chary[40];
printf(“已到达..\n”);
strcpy(x,1);
strcpy(y,2);
printf(“-->X:%s\n”,X);
printf(“-->Y:%s\n”,Y);
节点newNode;
newNode.one=x;
newNode.two=y;
节点[计数]=新节点;
计数++;
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
作废打印(){
int x;
对于(x=0;x<10;x++)
{
printf(“%d:(%s,%s)\n”,x,节点[x]。一,节点[x]。两);
}
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
无效检查(字符**参数)
{
如果(strcmp(*arg,“Add”)==0)
{
添加(arg[1],arg[2]);
}否则如果(strcmp(*arg,“print”)==0)
{
打印();
}否则{
printf(“错误语法输入:\n Add[item1][item2]\n或\n print\n”);
}
}
//-----------------------------------------------------------------------
void readandParseInput(字符*行,字符**arg)
{  
如果(fgets(第512行,stdin)!=NULL){
char*pch;
pch=strtok(行“\n\t”);
整数计数=0;
arg[0]=pch;
while(pch!=NULL)
{
计数++;
pch=strtok(空,“\n\t”);
arg[count]=pch;
}
}否则{
printf(“\n”);
出口(0);
}
}
//-----------------------------------------------------------------------
int main()
{
int size=100;
nodes=calloc(size,sizeof(Node));
int i;

对于(i=0;i您保留指向以下自动变量的指针:

 char x[40];
 char y[40];
add()
返回时,这些将超出范围,留下悬而未决的指针

您必须将
Node::one
Node::two
转换为数组,或者在堆上为它们分配内存。

add()
函数中,您不能通过
=
操作符将一个结构分配给另一个结构……您必须复制它

memcpy(&nodes[count],&newNode)

newNode.one指的是什么?

在函数add中

 newNode.one = x;
 newNode.two = y;


您的输出是什么?您可以放置断点并使用“监视窗口”查看您的变量在做什么?
#include <stdio.h>
#include <stdlib.h>

typedef struct {
    char *fn;
}NAME;

#define NAME_LEN 20

int main()
{
    NAME name;

    name.fn = (char *) calloc(NAME_LEN, sizeof(char));

    strcpy(name.fn, "Namco");

    printf("Name: %s\n", name.fn);

    free(name.fn);

    return 0;
}
newNode.one = x;
newNode.two = y;
 newNode.one = x;
 newNode.two = y;
 newNode.one = strdup(x);
 newNode.two = strdup(y);