将多行文本解析为单独的字符串

时间:2014-03-11 23:20:07

标签: c parsing

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

我的代码:

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);
}

1 个答案:

答案 0 :(得分:0)

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

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