我正在将char**类型的双指针传递给函数。在该函数中,我需要取消对指针的引用,然后通过字符数组建立索引。
不幸的是,当我试图将一个大写字母赋回数组时,得到了一个核心转储。
我需要帮助来做这件事。(这不是家庭作业,只是个人项目。)

void buffer(char **ppline);

int main()
{
  char *line="The redcoats are coming!";

  buffer(&line);
  printf("\nline = %s\n",line);

  return(0);
}


void buffer (char **ppline)
{

 int i=0;
 char a;

  for (i=0; i < strlen(*ppline); i++)
  {
    a = toupper( (*ppline)[i] );   /* THIS LINE CAUSES THE CORE DUMP  */
    ((*ppline)[i]) = a;
  }

  return;
}

最佳答案

""中的字符串文本是常量。你不能像现在这样修改它,因为这是未定义的行为。尝试这样做,它分配存储并将字符串文本复制到其中:

void buffer(char **ppline);

int main()
{
  char line[] = "The redcoats are coming!";

  buffer(&line);
  printf("\nline = %s\n",line);

  return(0);
}


void buffer (char **ppline)
{

 int i=0;
 char a;

  for (i=0; i < strlen(*ppline); i++)
  {
    a = toupper( (*ppline)[i] );   /* THIS LINE CAUSES THE CORE DUMP  */
    ((*ppline)[i]) = a;
  }

  return;
}

关于c - 解引用双指针并使用索引运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11156750/

10-11 19:23