C 二维数组段错误

标签 c arrays

我正在编写一个程序,在我的程序中,我需要将信息从第一个一维数组复制到二维数组中,但是每次一维数组中有一个\n 时,它都应该进入二维数组中的不同槽。例如,如果一维数组是 你好\n世界 在二维数组中它将变成 你好/n 在第一个插槽和 第二个插槽中的世界。

这是我的代码,但出现段错误。在此步骤之前,我的程序中已经创建了名为 chars 的数组。

words = (char**) malloc(numWords*sizeof(char));
  int copyCountForChars=0;
  int copyCountForWords=0;


  while(copyCountForWords <= numWords)
    {

      words[copyCountForWords][copyCountForChars] = chars[copyCountForChars];
      // printf("%c",chars[copyCountForChars]);                                                    
      if(chars[copyCountForChars] == '\n')
        {
          //  printf("%c",chars[copyCountForChars]);                                               

          copyCountForWords++;

        }

      copyCountForChars++;
    }

最佳答案

二维数组的内存分配应该像这样完成。

words = malloc(sizeof(char *) * size1);
for(i = 0; i< size1; i++)
{
    words[i] = malloc(sizeof(char) * size2);
}

关于C 二维数组段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28555449/

相关文章:

c - 中止功能如何永不返回?

C语言语法歧义: looping construct switch contains different switching construct other than 'case'

java: Arrays.sort() 与 lambda 表达式

python - 在 Python 中减去 numpy 数组时不需要的舍入

php - Javascript:通过post发送数组

javascript - 空值跳闸循环

java - 数组列表和添加值时遇到一些问题。 java

c++ - 调用函数传递数组

c - wait() SIGCHLD 和退出状态

c - 在C代码中通过数组添加两个大数