我有这个:
// Get database access parameters
const char* db = "codes", *server = "localhost", *user = "root", *pass = "pass";
// Connect to the sample database.
mysqlpp::Connection conn(false);
if (conn.connect(db, server, user, pass)) {
for (int i=0; i<10; ++i)
{
int d, count;
cout << "Введите D\n";
cin >> d;
cout << "Введите количество записей при D=" << d << endl;
cin >> count;
for (int a=0; a<count; ++a)
{
char * name;
int r,n1,n2;
cout << "Введите R\n";
cin >> r;
cout <<"Введите n1 и n2\n";
cin >> n1 >> n2;
cout <<"Введите название\n";
cin >> name;
mysqlpp::Query query = conn.query();
for (int j=n2-n1+1; j<n2; ++j)
{
int k =pow(2,(j+r));
query << "insert into code (n,k,d, name) values (" << j << "," << k << "," <<d<<"," << mysqlpp::quote_only << name << ");";
query.execute();
}
}
}
conn.disconnect ();
return 0;
}
else {
cerr << "DB connection failed: " << conn.error() << endl;
return 1;
}
}
很抱歉发布了所有代码。 我可以编译程序没有错误,但在命令行中,它说“分段错误”。这个错误是什么?以及如何解决?
答案 0 :(得分:7)
你应该为
分配空间char * name;
在写信之前。
如果您知道该名称不会更长,那么MAXNAME则只需将名称定义为
char name[MAXNAME+1]
这应该可以解决你的问题。
答案 1 :(得分:5)
我看到你正在使用C ++。在这种情况下,您应该使用
std::string name;
所以不必为其分配空间。
经验法则:如果您使用的是C ++,请使用<string>
代替char[]
;使用<vector>
代替数组;使用由构造函数初始化的成员变量而不是 malloc()
或 new()
。相信我,它会让您的编码生活更轻松。
(每条规则都有例外,但这是起点......)