【发布时间】:2020-09-23 15:31:43
【问题描述】:
我是 C 的初学者,通常我使用 C++。我尝试使用带有 char 数组的 struct,但是当我使用另一个 char *str 时,它会引发 segfault。
我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct s_obj t_obj;
struct s_obj {
char *str;
};
int main() {
char *str; // if disable no segmentation fault
t_obj obj;
printf("%lu\n",strlen(obj.str));
return(0);
}
我试图理解你所说的“strlen 的参数必须是一个字符串”@anastaciu 的意思...所以我尝试编写代码来做到这一点,但结果是一样的:segfault when使用了另一个char *str。
我找不到在结构中初始化 char *str 的方法。
typedef struct s_obj t_obj;
struct s_obj {
char *str;
};
int main() {
char *str; // if disable no segmentation fault fault
t_obj obj;
obj.str = strcpy(obj.str, "truc");
// printf("%lu\n",strlen(obj.str));
printf("%s\n",obj.str);
return(0);
}
【问题讨论】:
-
"... 一个包含 char 数组的结构" - 不,它没有。数组类似于
char str[100]。你所拥有的是一个 pointer,你永远不会初始化它并且它不指向任何东西。