我有一个文本文件如下:
排名头衔周末票房
1名美国狙击手31 850 000美元
2帕丁顿$8 505 000
我将每一行放入一个2d字符数组中。我想把每一行分开,把所有的级别放在一个数组中,把所有的标题放在另一个数组中,把所有的周末票房放在另一个数组中。
如何解析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);发布于 2015-02-19 05:27:59
您可以使用sscanf() 链接。
从文件中获取输入后,
int val;
char name[255],char value[100];
sscanf(data[i],"%d %[^$] %s",val,name,value);发布于 2015-02-19 05:24:00
可以使用斯特托克()进行解析。
在这里,您可以读取每一行,然后标记。这是一个你可以尝试的例子。
#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”。您将失去$标志,但您可以轻松地将它添加回去。
对于代码结构的其余部分,我建议创建一个单行缓冲区来读取每一行并分别处理它,然后只保留标记。
https://stackoverflow.com/questions/28598902
复制相似问题