C 复制从文件读取的字符串并将其存储在二维字符串数组中

C 复制从文件读取的字符串并将其存储在二维字符串数组中,c,arrays,string,file,C,Arrays,String,File,这是我从文件中复制字符串并将其存储在二维字符串数组中的代码 char str1[5000][2000]; while (NULL != fgets(str, 2000, fp)) { memcpy(str1[i][2000], str, 2000 * sizeof(char)); i=++line_number; } 但是我的死刑突然停止了。如何从文件中复制字符串并将其存储在字符串数组中?表达式 str1[i][2000] has类型为char,而函数me

这是我从文件中复制字符串并将其存储在二维字符串数组中的代码

  char str1[5000][2000];
  while (NULL != fgets(str, 2000, fp))
  {
    memcpy(str1[i][2000], str, 2000 * sizeof(char));
    i=++line_number;

   }
但是我的死刑突然停止了。如何从文件中复制字符串并将其存储在字符串数组中?

表达式

str1[i][2000]
has类型为
char
,而函数
memcpy
要求第一个参数的类型为
void*

你可以改写

char str1[5000][2000];
size_t n = 0;

while ( n < 5000 && fgets( str1[n], sizeof( *str1 ), fp ) != NULL )
{
    str1[n][strcspn( str1[n], "\n" )] = '\0';
    ++n;
}

为什么要创建这么大的阵列?或者实际上:为什么要创建这样大的数组?注意
str1
对于自动变量来说太大了
static char str1[5000][2000];