解析二维字符数组

Parse 2d character array

我有一个文本文件如下:

排名标题周末票房

1 名美国狙击手 $31,850,000

2 帕丁顿熊 8,505,000 美元

我将每一行放入一个二维字符数组中。 我想分开每一行并将所有排名放在一个数组中,将所有标题放在另一个数组中,将所有周末票房放在另一个数组中。

如何解析 char data[5][200] 以便我只能获取字符串值。我在考虑 %s 说明符,但我不知道使用哪种方法(c 的新方法)。

//-------Text File Implementation-----------
    FILE *fp;
    char data[5][200];

    /* opening file for reading */
        fp = fopen("movie.txt", "r");
        if(fp == NULL) {
            perror("Error opening file");
            return(-1);
        }


        int i = 0;
        while(fgets (data[i], 200, fp)!=NULL)
        {
        /* writing content to stdout */
            puts(data[i]);
            i+=1;

        }

        fclose(fp);

您可以使用 strtok()

进行解析

在这里你可以读入每一行,然后分词。这是您可以试用的示例。

#include <string.h>
#include <stdio.h>

int main(int argc, char* argv[]) {
  char text[255] = "1 American Sniper ,850,000";

  const char *rank = strtok(text, " ");
  const char *name = strtok(NULL, "$");
  const char *amount = strtok(NULL, "\n");

  printf("%s|%s|%s\n", rank, name, amount);
}

这会输出“1|美国狙击手 |31,850,000”。您会丢失 $ 符号,但您可以轻松将其添加回来。

对于其余的代码结构,我建议创建一个单行缓冲区来读入每一行并分别处理,然后只保留标记。

您可以使用 sscanf() link.

从文件中获取输入后,

  int val; 
  char name[255],char value[100];
  sscanf(data[i],"%d %[^$] %s",val,name,value);