0

我试图从文本文件中读取数据并将其添加到数组中。但是,它会引发错误 ["Warning:" assignment 从没有强制转换的指针中生成整数]。我声明 fp 是 FILE 的一个变量,并且已经以只读模式打开了文本文件。

char arrRequest[100];
char strRow[10];
int i = 0;


.....................

void request(){
  for (;;){
      fgets(strRow, 10, (FILE *)fp); 
      i = i + 1;
      arrRequest[i] = strRow;  // it raises an error here
      printf("value of %d is %s:\n", i, arrRequest[i]);
  }
}

你能告诉我为什么会这样吗?

谢谢。

4

1 回答 1

0

在您的代码中,您声明:

char arrRequest[100];
char strRow[10];

但在 for 循环中:

arrRequest[i] = strRow;

这意味着您将一个字符分配给一个字符数组。所以它在这里引发了一个错误。

如果要复制字符串,则应使用strcpy函数。您可以将指针数组或二维数组声明为上面的注释:

char arrRequest[100][10]
// using strcpy
strcpy(arrRequest[i], strRow);

或者

char * arrRequest[100]
// allocate for each arrRequest element
arrRequest[i] = malloc(strlen(strRow)*sizeof(char) + 1);
if (!arrRequest[i])
   // Handle error

OT,while如果没有要读取的内容,您应该使用循环停止读取文件。您可以使用for代码中使用的循环,但必须停止阅读,直到遇到EOF. fp如果之前声明,则不需要强制转换FILE *fp

while(fgets(strRow, 10, fp);)
于 2020-04-19T13:21:50.913 回答