扫描char数组并在c ++中正确地将其放入struct中

时间:2017-02-19 11:20:30

标签: c++ arrays struct char

想要让我的char数组在一个结构中,但它会崩溃。

正如我后来所知,扫描阵列时也存在问题。

输入字符串由两个单词“name”和“surname”组成,用空格分隔。我还没有写出扫描第二个单词的部分,所以现在只扫描第一个单词。

代码中的检查行有奇怪的输出。我输入“James”,它给了我“J8224a8224m8224e8224s8224”然后崩溃。

#include <iostream>
#include<string.h>

using namespace std;
struct base
{
    char* name;
    char* surname;
    int point1;
    int point2;
};
main()
{
    setlocale(LC_ALL, "rus");
    int n;
    cin >> n;
    base a[n];
    char symb;
    char sym[20];
    int j = 0;
    for (int i = 0; i < n; i++)
    {
        do
        {
            symb = getchar();
            sym[j] = symb;
            j++;
        } while (symb != ' ');

        for (int k = 0; k < j; k++) //check
            cout << sym[k] << '  ';  //check

        strcpy(sym, a[i].name);
        j = 0;
    }
}

1 个答案:

答案 0 :(得分:0)

有几个错误:

  1. 您不能对base a [n]使用静态初始化,因为编译时不知道变量n。
  2. 在执行strcpy之前,必须先初始化[i] .name。
  3. 如果你知道长度为j,你应该使用sptncpy而不是strcpy。
  4. 您的代码应该如下所示

    config, err := Configure()
    
    if err != nil {
        ctx.RenderWithStatus(iris.StatusBadRequest, "400.html", ErrorPageData{"try again later"})
        return
    }
    
    user := User{mail, password, 0}
    db := config.Database