我有一个文本文件如下:
排名标题周末票房
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);
答案 0 :(得分:2)
您可以使用sscanf()
link.
从文件中获取输入后,
int val;
char name[255],char value[100];
sscanf(data[i],"%d %[^$] %s",val,name,value);
答案 1 :(得分:1)
您可以使用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);
}
这输出&#34; 1 |美国狙击手| 31,850,000&#34;。您将丢失$符号,但您可以轻松地将其添加回来。
对于其余的代码结构,我建议创建一个行缓冲区来读取每一行并单独处理它,然后在此之后保留令牌。