嗨我正在使用“结构”编写一个简单的C程序。我试图添加字符串(这似乎总是麻烦),我终于可以编译,但是当我运行它时,我得到一个错误。该文件的名称是“结构”,这是错误:C结构错误:检测到堆栈粉碎,中止(核心转储)
*** stack smashing detected *** ./struct terminated
Aborted (core dumped)
下面是代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct members {
int id;
int age;
char name[];
};
int main(void)
{
struct members person;
person.id = 1223;
person.age = 37;
strcpy(person.name, "Matthew");
printf("ID: %d\n Age: %d\n Name: %s\n", person.id, person.age, person.name);
return 0;
}
我不知道为什么它编译罚款,然后崩溃。我猜这是代码与字符串有关的内存问题。有趣的是,它实际上工作,并打印信息到控制台,然后崩溃。任何帮助表示赞赏。谢谢。
因为'char name []'就像做'const char *'你应该直接给它赋值就像'person.name =“Matthew”' –
“编译正确”并不意味着程序**是**正确。如果你设法编写一个可以确保这一点的工具,你解决了_halting问题_并且是图灵奖的最佳人选。 – Olaf
http://stackoverflow.com/q/12680946/3185968 – EOF