我正在将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/