这是我从文件中复制字符串并将其存储在二维字符串数组中的代码。
char str1[5000][2000];
while (NULL != fgets(str, 2000, fp))
{
memcpy(str1[i][2000], str, 2000 * sizeof(char));
i=++line_number;
}
但我的执行突然停止了。我如何从文件中复制字符串并将其存储在字符串数组中?
答案 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];