我将一个 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/