我正在尝试从c中的.txt文件解析多行文本。我现在拥有的方式仅解析一行。我想知道如何扫描多行并将其保存在不同的字符串中

我的代码:

void parser();
#define ROOM_STRING_LENGTH 10000
int main(int argc, char *argv[])
{
  parser();

  return 0;
}


void parser()
{
  FILE * rooms;
  int i;
  char c;
  char roomStrings[ROOM_STRING_LENGTH];

  rooms = fopen("assets/rooms.txt", "r");

  if(rooms == NULL)
  {
    printf("error opening file\n");
  }

  fscanf(rooms, "%s", roomStrings);
  while((c=fgetc(rooms))!='\n')
  {

    roomStrings[i] = c;
    i++;
  }
  printf("%s\n", roomStrings);
  fclose(rooms);
}

最佳答案

您可能希望使用fgets()而不是fgetc()。一次读取整行。 Here is an explanation of fgets().

如果您知道要读取多少行,则可以将roomStrings设置为字符串数组,如下所示:char roomStrings[NUM_LINES][ROOM_STRING_LENGTH]。否则,有几种方法可以动态调整它的大小。

09-25 22:14