【发布时间】:2014-03-11 00:48:42
【问题描述】:
我有一个指向我的struct gsa_sentence 的指针,它有一个char* 类型的结构成员,称为untouched_sentence。
我的目标是使用 strcpy 将文件中的一行复制到这个结构变量中,但是我在 strcpy 函数调用中遇到了分段错误。
结构:
typedef struct gsa_sentence{
char *untouched_sentence;
char *sentence_id;
char mode;
int fix;
int sv_1;
int sv_2;
int sv_3;
int sv_4;
int sv_5;
int sv_6;
int sv_7;
int sv_8;
int sv_9;
int sv_10;
int sv_11;
int sv_12;
int pdop;
int hdop;
int vdop;
}gsa_sentence;
strcpy 调用:
gsa_sentence* gsa;
gsa = malloc(sizeof(gsa_sentence));
printf("%s", line);
if(gsa != NULL){
strncpy(gsa->untouched_sentence, line, strlen(line));
printf("%s", gsa->untouched_sentence);
}
我在代码的其他地方使用了 strcpy,它工作正常,我不知道发生了什么。
gdb 调试器说它肯定在 strcpy 函数调用上
【问题讨论】:
-
很难说当您省略了
line的定义时。也就是说,您应该避免使用strcpy。使用更安全的strncpy。
标签: c segmentation-fault