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

时间:2016-02-07 13:17:34

标签: 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;

   }

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

1 个答案:

答案 0 :(得分:0)

表达

str1[i][2000]

的类型为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;
}

在这种情况下,变量n将包含读取行数。

当阵列具有静态存储持续时间(或动态分配)时更好,因为它太大,例如

static char str1[5000][2000];