我似乎无法做到这一点,这是我的代码:
#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错误?
我环顾四周,找不到任何解决方案。 编辑:注释掉了重复
答案 0 :(得分:1)
在程序中使用strdup()
功能。像,
hello.string = strdup (temp);
strdup
是Posix函数,strdup
为堆上的新字符串分配内存。它返回一个指向新分配的内存的指针,它已经复制了该字符串。
答案 1 :(得分:1)
在使用之前,您的*
变量似乎未初始化。试试这个
count