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

标签 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]

具有 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/

相关文章:

c - 为什么代码显示写入管道不能确保原子性?

c - 在 C 中打印并插入静态矩阵

java - java中如何知道何时克隆?

R 中的字符串操作

c - Android使用C(ndk)从 Assets 文件夹中读取文本文件

声明全局变量时的编译器错误

javascript - 减少不按预期工作?

c - 我在数组中的一个值是 "0"

.net - 使用string.text.contains时如何忽略大小写?

php - 如何使用php按字母顺序排列