嗨我正在使用「結構」編寫一個簡單的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