我目前正在嘗試從文件中掃描單行,但在字符串處遇到障礙。 這是我的教授告訴我要處理的示例行。從文件掃描
enum status{MEM,PREP,TRAV}
union type { double int day, char* title, float cost}
13953 P 12 26 2011 1 5 2012 2 A 3.30 249.00 A 2.0 148.00 MEM Cuba Christmas 3 0 2 Sierra Del Rosario, Cuba
我很好,當我從文件中掃描它的時候接受的點(MEM古巴聖誕節)。我只是使用fscanf()
來讀取數據的第一部分,但是MEM是枚舉類型,具有指定以下輸入的聯合類型。我的問題是掃描的語法。我試着從MEM開始使用getline,但是由於城市/國家可能有空間,所以我在標記化方面遇到了困難。不知道還有什麼其他的掃描我正在看sscanf()
,但不知道它是否適用於文件。
更新:
int main(void);
{
int m, length = 100;
char *word, file_name[100];
FILE *file_point
printf("Please enter file name with .txt extension:");
scanf("%s", file_name);
file_point = fopen(file_name,"r");
while (fscanf(file_point, "%d", &m) != EOF)
{
temp.dest_code = m;
fscanf(file_point, " %c %d %d %d %d %d %d %d",
&temp.area_code,
&temp.Smonth, &temp.Sday, &temp.Syear,
&temp.Emonth, &temp.Eday, &temp.Eyear,
&temp.leg_num);
for (n=0; n < temp.leg_num; n++)
{
fscanf(file_point," %c %f %f",
&temp.tleg[n].travel_type,
&temp.tleg[n].travel_time,
&temp.tleg[n].cost);
}
fscanf(file_point," %d %d %d ",
&temp.adult,
&temp.child,
&temp.infant);
temp_name = (char *)malloc(length + 1);
getline (&temp_name, &length, file_point);
word = strtok(temp_name, ",");
temp.dest_name=(char *)malloc(strlen(word)+1);
strcpy(temp.dest_name, word);
word = strtok(NULL, ",");
temp.dest_country=(char *)malloc(strlen(word)+1);
strcpy(temp.dest_country,word2);
printf("name:%s country:%s\n", temp.dest_name, temp.dest_country);
printf("adult:%d , child:%d , infant:%d \n", temp.adult, temp.child, temp.infant);
}
}
這是我使用的基礎,我想到了,但不知道如何處理枚舉和工會的代碼。我正在考慮做類似於:
getline(&status, &length, file_point);
但我如何將字符串轉換爲整型或浮點型?
哦,忘了提及我正在從一個文件中掃描此單行文件 – 2011-05-09 00:24:50
您可以發佈一些代碼,向我們展示從現在開始您嘗試做什麼? – Heisenbug 2011-05-09 00:41:56
'enum'最後需要一個分號。 'union'最後還需要一個分號,逗號需要是分號。但是,如果您已經編譯了代碼,那麼問題在於您沒有複製和粘貼代碼。 – 2011-05-09 05:35:32