首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析2d字符数组

解析2d字符数组
EN

Stack Overflow用户
提问于 2015-02-19 04:59:56
回答 2查看 76关注 0票数 0

我有一个文本文件如下:

排名头衔周末票房

1名美国狙击手31 850 000美元

2帕丁顿$8 505 000

我将每一行放入一个2d字符数组中。我想把每一行分开,把所有的级别放在一个数组中,把所有的标题放在另一个数组中,把所有的周末票房放在另一个数组中。

如何解析char data[5][200],使我只获得字符串值。我在考虑使用%s说明符的方式,但是我不知道用哪种方法来使用它(对于c来说是新的)。

代码语言:javascript
复制
//-------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);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-19 05:27:59

您可以使用sscanf() 链接。

从文件中获取输入后,

代码语言:javascript
复制
  int val; 
  char name[255],char value[100];
  sscanf(data[i],"%d %[^$] %s",val,name,value);
票数 2
EN

Stack Overflow用户

发布于 2015-02-19 05:24:00

可以使用斯特托克()进行解析。

在这里,您可以读取每一行,然后标记。这是一个你可以尝试的例子。

代码语言:javascript
复制
#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,850,000”。您将失去$标志,但您可以轻松地将它添加回去。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28598902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档