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