Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.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 从argv、tree-trie复制时转储内核_C_Struct_Tree_Argv - Fatal编程技术网

C 从argv、tree-trie复制时转储内核

C 从argv、tree-trie复制时转储内核,c,struct,tree,argv,C,Struct,Tree,Argv,所以我在制作它时遇到了问题,所以我可以使用argv作为字符数组。我希望能够在程序的其余部分使用argv中的单词(将它们放入tree-trie,然后计算每个单词的出现次数并对其进行排序),因此我尝试将其复制到另一个2d数组,但没有成功。请提供帮助,代码: #包括 #包括 #包括 #定义数组大小(a)sizeof(a)/sizeof(a[0]) #定义字母表大小(26) //将键当前字符转换为索引 //仅使用“a”到“z”和小写字母 #定义字符到索引(C)((int)C-(int)“A”) #定义索

所以我在制作它时遇到了问题,所以我可以使用argv作为字符数组。我希望能够在程序的其余部分使用argv中的单词(将它们放入tree-trie,然后计算每个单词的出现次数并对其进行排序),因此我尝试将其复制到另一个2d数组,但没有成功。请提供帮助,代码:

#包括
#包括
#包括
#定义数组大小(a)sizeof(a)/sizeof(a[0])
#定义字母表大小(26)
//将键当前字符转换为索引
//仅使用“a”到“z”和小写字母
#定义字符到索引(C)((int)C-(int)“A”)
#定义索引到字符(IX)('A'+IX)
字符字[3000][40]={{0};
int计数器[3000]={0};
int-wordnr=0;
typedef struct trie\u node trie\u node\t;
结构trie_节点
{
整数计数器;
trie_node_t*子项[字母表大小];
};
typedef-struct-trie-trie;
结构trie
{
trie_node_t*root;
整数计数;
};
//返回新的trie节点
trie_node_t*getNode(void)
{
trie_node_t*pNode=NULL;
pNode=(trie_node_t*)malloc(sizeof(trie_node_t));
if(pNode)
{
int i;
pNode->counter=0;
对于(i=0;ichildren[i]=NULL;
}
}
返回pNode;
}
//初始化trie
无效初始化(trie_t*pTrie)
{
pTrie->root=getNode();
pTrie->count=0;
}
void setorder_rec(trie_node_t*pCrawl,char*str,int n)
{
if(pCrawl==NULL)返回;
如果(pCrawl->计数器){
str[n]='\0';
strcpy(单词[wordnr],str);
单词[wordnr][strlen(str)]='\0';
计数器[wordnr]=pCrawl->counter;
wordnr++;
printf(“%s:%d\n”,n,str,pCrawl->counter);
}
对于(int i=0;ichildren[i],str,n+1);
}
}
无效设置顺序(trie_t*pTrie)
{
字符临时字[40]={0};
setorder_rec(pTrie->root,tempword,0);
}
无效插入(trie_t*pTrie,字符键[])
{
智力水平;
int length=strlen(键);
整数指数;
trie_node_t*pCrawl;
pTrie->count++;
pCrawl=pTrie->root;
用于(级别=0;级别<长度;级别++)
{
索引=字符到索引(键[级别]);
如果(!pCrawl->子项[索引])
{
pCrawl->children[index]=getNode();
}
pCrawl=pCrawl->children[索引];
}
pCrawl->counter++;
}
void bubble_sort()
{
int i,j,温度;
int n=15;
char tempwordy[40]={0};
对于(i=1;i计数器[j+1])
{   
printf(“交换计数器[%d]=%d与计数器[%d]=%d\n”,j,计数器[j],j+1,计数器[j+1]);
温度=计数器[j];
计数器[j]=计数器[j+1];
计数器[j+1]=温度;
strcpy(临时词汇,单词[j]);
strcpy(单词[j],单词[j+1]);
strcpy(单词[j+1],临时单词);
}
}
}
}
int main(int argc,char*argv[])
{
字符*键[argc];
对于(int i=0;i问题可能在这里:

keys[i] = (char *) malloc(strlen(argv[i+1]+1));
尝试重写为:

keys[i] = (char *) malloc(strlen(argv[i+1])+1);
否则将向指针添加1

或者,如果需要忽略第一个字符,则必须为字符串末尾添加1个字符。

您不能这样做:


for(inti=0;iThanks,但“iargc”是什么意思是?我还必须从I=0开始抱歉,这是一个错误,你的代码中有很多错误,我会停止搜索一些错误。用调试信息编译你的代码,并使用GDB来定位问题。好吧,如果你删除从argv复制到键的那些行,并用一些单词创建一个键数组,它就可以正常工作。
keys[i] = (char *) malloc(strlen(argv[i+1])+1);
for(int i=1; i&lt;argc; i++) strcpy(keys[i], argv[1]);</code>