【发布时间】:2015-01-12 21:30:01
【问题描述】:
我正在使用 C 语言进行一个项目,我正在使用 fgets() 从文件中读取行。每个文件的格式是这样的:
Title: Name Here, Artist: Artist Here, Year Published: 2014
目前我将上面的行存储为单个字符串。问题是,我有一个名为 music_lib 的结构数组,其类型为 Song,如下所示:
struct Song
{
char title[250];
char artist[250];
int year_published;
};
我希望能够拆分我拥有的字符串并将Name Here 存储在title 中,Artist Here 存储在artist 中,并将2014 存储在year_published 中,同时丢弃其余的字符串我从文件中获取。
我查看了strtok(),但似乎很难,因为我想忽略Title: 和其他词以及逗号。我猜有没有一种简单的方法可以找到一个子字符串Title:,将之后的任何内容存储到逗号,然后找到子字符串Artist: 存储那里的任何内容,直到我打一个逗号..然后做同样的事情Year Published?
【问题讨论】:
-
如果标题类似于
How to Become an Artist: 101 Extremely Useful Tips,你会怎么做? -
你昨天不是问了基本相同的问题吗?
-
@iharob 我已经尝试使用
strstr和一堆函数来尝试解析每个项目。但是代码变成了意大利面条并且效果不佳:/ -
@Alex 试试
chux的解决方案。 -
@luserdroog 最初,我试图将文本从文件中取出并以这种方式分离。但是,我了解到
scanf不应该真正用于我的情况,所以我使用了fgets()。这个问题更多的是关于在程序内部拆分字符串,而不是从输入文件中解析它。