[英]Parse 2d character array
我有一個文本文件,如下所示:
排名標題周末票房
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);
您可以使用sscanf()
鏈接。
從文件獲取輸入后,
int val;
char name[255],char value[100];
sscanf(data[i],"%d %[^$] %s",val,name,value);
您可以使用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);
}
這將輸出“ 1 |美國狙擊手| 31,850,000”。 您會丟失$符號,但可以輕松將其重新添加。
對於您的其余代碼結構,我建議創建一個行緩沖區以讀取每一行並分別處理它,然后在此之后保留標記。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.