这是我的代码,用于从文件复制字符串并将其存储在二维字符串数组中。
char str1[5000][2000];
while (NULL != fgets(str, 2000, fp))
{
memcpy(str1[i][2000], str, 2000 * sizeof(char));
i=++line_number;
}
但是我的执行突然停止了。如何从文件中复制字符串并将其存储在字符串数组中?
最佳答案
表达式
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];
关于复制从文件中读取的字符串并将其存储在二维字符串数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35253956/