需要帮助将char数组复制到带有char指针的数组结构中

时间:2014-03-27 19:40:17

标签: pointers struct char copy

我试图将char数组字复制到char指针s[1].c,然后将另一个字复制到char指针s[2].c但是当我试图这样做时,第二个字似乎在所有两个指针中都被复制了。我该如何解决这个问题?我不想使用字符串。

struct Stud {
  char *c;
} s[100];
char word[32];

int main()
{
  strcpy(word,"one");
  s[1].c=word;
  word={0};
  strcpy(word,"two");
  s[2].c=word;
  cout<<s[1].c<<" "<<s[2].c;
  return 0;
}

1 个答案:

答案 0 :(得分:0)

在您的代码中设置s[1].c = word;,这意味着您将s [1] .c设置为单词的地址。然后设置s[2].c = word;,这是完全相同的内存位置。 (对于c字符串,(char *)s1 = (char *)2不会像您期望的那样执行字符串复制。它只是将一个指针指向另一个。)

使用strdup分配新的内存块,然后将字符串复制到分配的空间中。

此处修改了您的代码。

struct Stud
{
    char *c;
} s[100];

int main()
{
    char word[32];
    strcpy(word, "one");
    s[0].c = strdup(word);   // In C/C++ the first array index is 0
    strcpy(word, "two");
    s[1].c = strdup(word);

    // Should check to make sure s[0].c and s[1].c are not NULL....

    cout << s[0].c << " " <<s [1].c;

    free(s[0].c);
    free(s[1].c);

    return 0;
}