解析二维字符数组
Parse 2d character array
我有一个文本文件如下:
排名标题周末票房
1 名美国狙击手 $31,850,000
2 帕丁顿熊 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);
您可以使用 strtok()
进行解析
在这里你可以读入每一行,然后分词。这是您可以试用的示例。
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
char text[255] = "1 American Sniper ,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”。您会丢失 $ 符号,但您可以轻松将其添加回来。
对于其余的代码结构,我建议创建一个单行缓冲区来读入每一行并分别处理,然后只保留标记。
您可以使用 sscanf()
link.
从文件中获取输入后,
int val;
char name[255],char value[100];
sscanf(data[i],"%d %[^$] %s",val,name,value);
我有一个文本文件如下:
排名标题周末票房
1 名美国狙击手 $31,850,000
2 帕丁顿熊 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);
您可以使用 strtok()
进行解析在这里你可以读入每一行,然后分词。这是您可以试用的示例。
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
char text[255] = "1 American Sniper ,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”。您会丢失 $ 符号,但您可以轻松将其添加回来。
对于其余的代码结构,我建议创建一个单行缓冲区来读入每一行并分别处理,然后只保留标记。
您可以使用 sscanf()
link.
从文件中获取输入后,
int val;
char name[255],char value[100];
sscanf(data[i],"%d %[^$] %s",val,name,value);