segfault分配给索引的derected指示指向c中的字符串



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

相关内容

  • 没有找到相关文章

最新更新