print
语句按预期执行,如果我在if
语句中打印line[0]
,它也会按预期进行打印。但是,gdb
告诉我该if
语句中发生了segfault
。我是否误解了如何访问string
中的字符?
编辑的代码以删除无关的错误
void setflags(char** linep)
{
char* line = *linep;
while(strlen(line))
{
printf("%sn",line);
if (line[0] == '.')
line[0] = '*';
else if (line[0] == ' ')
(*linep) ++;
else
break;
line = *linep;
}
}
忽略有问题的循环样式,直到您显示如何使用此功能,您的SEG故障才无法诊断。我的怀疑是您通过只读字符串,例如:
char *string = "this is read-only string literal";
setflags(&string); // error
如果您正在做这样的事情,则必须使用数组进行修改:
char string[] = "this is a modifiable character array";
setflags(&string); // no error