在 c 中分配给指向字符串的索引取消引用指针时出现段错误
Segfault when assigning to indexed dereferenced pointer to string in c
print
语句按预期执行,如果我在 if
语句中打印 line[0]
,它也按预期打印。但是,gdb
告诉我 segfault
出现在 if
语句中。我是否误解了如何访问 string
中的字符?
编辑代码以删除不相关的错误
void setflags(char** linep)
{
char* line = *linep;
while(strlen(line))
{
printf("%s\n",line);
if (line[0] == '.')
line[0] = '*';
else if (line[0] == ' ')
(*linep) ++;
else
break;
line = *linep;
}
}
忽略有问题的循环样式,在您展示如何使用此函数之前,您的段错误无法诊断。我怀疑你传递的是只读字符串,例如:
char *string = "this is read-only string literal";
setflags(&string); // error
如果您正在做这样的事情,您必须使用数组使其可修改:
char string[] = "this is a modifiable character array";
setflags(&string); // no error
print
语句按预期执行,如果我在 if
语句中打印 line[0]
,它也按预期打印。但是,gdb
告诉我 segfault
出现在 if
语句中。我是否误解了如何访问 string
中的字符?
编辑代码以删除不相关的错误
void setflags(char** linep)
{
char* line = *linep;
while(strlen(line))
{
printf("%s\n",line);
if (line[0] == '.')
line[0] = '*';
else if (line[0] == ' ')
(*linep) ++;
else
break;
line = *linep;
}
}
忽略有问题的循环样式,在您展示如何使用此函数之前,您的段错误无法诊断。我怀疑你传递的是只读字符串,例如:
char *string = "this is read-only string literal";
setflags(&string); // error
如果您正在做这样的事情,您必须使用数组使其可修改:
char string[] = "this is a modifiable character array";
setflags(&string); // no error