嗨,由于某种原因,Strcat不喜欢我的结构中的value属性.我不知道为什么.这是我的结构代码:
typedef struct TrieSearchTree{ char value; struct DynamicList* children; };
这是我的方法:
void PrintDynamicListContents(struct DynamicList* dynamicList, char* word) { struct dynamicListNode* currentRecord; struct TrieSearchTree* trieSearchTree; struct dynamicListNode* nextRecord = dynamicList->head; while(nextRecord != NULL) { currentRecord = nextRecord; nextRecord = currentRecord->next; trieSearchTree = currentRecord->entity; if (trieSearchTree != NULL) { if (trieSearchTree->value != WORD_END_CHAR) { char c[CHAR_LENGTH] = ""; strcat_s(c, CHAR_LENGTH, word); strcat_s(c, CHAR_LENGTH, trieSearchTree->value); PrintDynamicListContents(currentRecord, c); } else { printf("%s", word); } } } }
这是错误消息:
证明结构中的值返回某些内容('l'字符)
我一直在努力strcat
工作几个小时,即使阅读在线教程也无法让它工作.所有帮助赞赏.
该strcat_s
函数期望a char *
,特别是指向空终止字符串的指针,作为第三个参数.你传递了一个char
.您的编译器应该已经警告过您.
该字符被解释为指针并被解除引用.这会调用未定义的行为,在这种情况下会出现崩溃.
如果要将单个字符附加到字符串,则需要手动添加它和新的null终止符.
char c[CHAR_LENGTH] = ""; strcat_s(c, CHAR_LENGTH, word); c[strlen(c) + 1] = '\0'; c[strlen(c)] = trieSearchTree->value;