【发布时间】:2010-04-07 15:40:02
【问题描述】:
使用 strncpy 和 (pointer-to-struct)->(member) 表示法时出现分段错误:
我已经简化了我的代码。我初始化一个结构并将它的所有标记设置为一个空字符串。然后声明一个指向结构的指针并将结构的地址分配给它。
我将指针传递给一个函数。我可以在函数的开头打印出结构的内容,但是如果我尝试在 strncpy 函数中使用 tp -> mnemonic,我会遇到段错误。谁能告诉我我做错了什么?
typedef struct tok {
char* label;
char* mnem;
char* operand;
}Tokens;
Tokens* tokenise(Tokens* tp, char* line) {
// This prints "load"
printf("Print this - %s\n", tp -> mnem);
// This function gives me segmentation fault
strncpy(tp -> mnem, line, 4);
return tp;
}
int main() {
char* line = "This is a line";
Tokens tokens;
tokens.label = "";
tokens.mnem = "load";
tokens.operand = "";
Tokens* tp = &tokens;
tp = tokenise(tp, line);
return 0;
}
我已使用 printf 语句确认代码在 strncpy 函数处确实停止执行。
【问题讨论】:
标签: c