簡體   English   中英

解析2D字符數組

[英]Parse 2d character array

我有一個文本文件,如下所示:

排名標題周末票房

1名美國狙擊手$ 31,850,000

2帕丁頓(Paddington)$ 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);

您可以使用sscanf() 鏈接。

從文件獲取輸入后,

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

您可以使用strtok()進行解析

在這里您可以讀入每一行,然后標記化。 這是一個可以嘗試的示例。

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

int main(int argc, char* argv[]) {
  char text[255] = "1 American Sniper $31,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”。 您會丟失$符號,但可以輕松將其重新添加。

對於您的其余代碼結構,我建議創建一個行緩沖區以讀取每一行並分別處理它,然后在此之后保留標記。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM