C将带有已分配内存的字符串移动到字符串中

时间:2016-08-12 05:00:00

标签: c

我似乎无法做到这一点,这是我的代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct {                    
    int          test;      
    char        *string;                
    } Data;
Data hello;
int main ()
{
  char *temp;
  size_t a = 100;
  temp = malloc(a*sizeof(char));
    int count = 0;
  temp[count] = 'a';
  count++;
  temp[count] = 'b';
    count++;
    temp[count] = '\0';

  printf("%s\n", temp); //shows string

  //hello.string = dup(temp); this fails, as does strdup()[copies mem address]
  printf("%s\n", hello.string);

    return(0);
}

我的输出是

ab
seg fault

如何将此字符串复制到结构字符串中,然后从结构中调用字符串而不会出现seg错误?

我环顾四周,找不到任何解决方案。 编辑:注释掉了重复

2 个答案:

答案 0 :(得分:1)

在程序中使用strdup()功能。像,

hello.string = strdup (temp);

strdup是Posix函数,strdup上的新字符串分配内存。它返回一个指向新分配的内存的指针,它已经复制了该字符串。

答案 1 :(得分:1)

在使用之前,您的*变量似乎未初始化。试试这个

count