gpt4 book ai didi

C char*, char**, char***, 打印解难

转载 作者:太空宇宙 更新时间:2023-11-04 00:03:19 48 4
gpt4 key购买 nike

我正在学习如何在 C 中使用指针(使用 malloc 和 free),但我在这个练习中遇到了一些麻烦。我只想制作一个指针数组,我想在其中保存每个单词的方向。然后我想为一个特定的词做一个 free(),但是这个 free 使我的程序崩溃。

int main
{
printf("Introduce how many words do you want. \n");
scanf("%d", &numWords);
getchar();

char ***array = (char***)malloc(sizeof(char**) * numWords);

if (array == nullptr)
{
exit(1);
}

for (int i = 0; i < numWords; i++) array[i] = (char**)malloc(sizeof(char*)) ;

for (int i = 0; i < numWords; i++)
{
printf("Enter your word number %d: \n", i + 1);
scanf("%s", &(array[i]));
getchar();
}

for (int i = 0; i < numWords; i++)
{
printf("%s \n", &(array[i]));
}

free(array[1]);

printWord(array[2])
}

另外,我想制作这个功能,因为我想打印单词的每个字符之前都有一个空格。它也使我的程序崩溃。

void printWord(char **array)
{
for (int i = 0; i < strlen(*array); i++) printf("%c ", &((*array)[i]));
}

不知道如何集中注意力。你有什么推荐给我的?你在我的代码中发现任何问题吗?谢谢。

最佳答案

你把星星搞混了。这是它的工作原理:

  • char*: 字符串
  • char**: 列表
  • char***: list< list< string >>

再次检查您的代码并检查是否每个 printf("%s"...) 都对应一个 char* 并且每个 printf("%c"...) 都对应一个 char。同时打开你的编译器中的所有警告,如果它有任何好处的话,它应该在你将错误的类型传递给 printf() 时警告你。

提示:main 中的array 变量应该是 char**,而不是 char***。

关于C char*, char**, char***, 打印解难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33971422/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com