c++ - 获取用户输入时出现段错误

标签 c++ segmentation-fault

我有这个:

    // 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;
    }
}

抱歉发布了所有代码。 我可以毫无错误地编译程序,但在命令行中,它显示“段错误”。这是什么错误?以及如何解决?

最佳答案

你应该为

分配空间
char * name;

在写入之前。

如果您知道名称不会比 MAXNAME 长,那么只需将名称定义为

char name[MAXNAME+1]

这应该可以解决您的问题。

关于c++ - 获取用户输入时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8296571/

相关文章:

c - Fscanf 段错误

c++ - 使用 bool 类型的 vector 的段错误

c - Strtok() 段错误

c++ - Fortran 是否复制传递给函数/子例程的数组部分?

c++ - IDWriteFactory::GetSystemFontCollection 不会提供字体变体

c++ - 调整交换链的后台缓冲区 (DX9)

非 protobuf 类的 protobuf `oneof` 功能的 C++ 实现

c - 执行开始时出现段错误

segmentation-fault - 测试 shellcode 时出现段错误

由 C++ 网络凭证