如何从文本文件中读取输入?输入文件有几行,每行的格式为city city distance
,其中有两个城市和它们之间的距离。
我已经尝试了几个阅读输入的东西,但不幸的是那些没有用。我需要 解析每行的各个值。 (每行包含2个城市名称和它们之间的距离。)任何帮助都将受到赞赏。
data = fopen(argv[1],"r");
while(!EOF){
while(1){
c=fgetc(data);
inname=(char**)malloc(sizeof(char*));
if(c==' ')
mode++;
else if(c=='\n'){mode=0;
break;}
else {
switch(mode%3){
case 0;
for(i=0;fgetc(data)!=' ';i++){
if(inname[count]!=NULL) {count++;inname=(char**)malloc(sizeof(char*));}
inname[count][i]=fgetc(data);}
break;
case 1;
if(inname[count]!=NULL){ count++;inname=(char**)malloc(sizeof(char*));}
for(i=0;fgetc(data)!=' ';i++){
inname[count][i]=fgetc(data);}
break;
/*case 2;for(i=0;fgetc(data)!='\n';i++){
dist[say]=atoi(str);}}}*/
}}}count++;}
`
答案 0 :(得分:1)
我认为您应该查看fscanf来阅读这样的格式化输入。
要读取包含两个字符串和一个int的行,您可以使用以下内容:
fscanf(data, "%s %s %d", &city1, &city2, &distance);
要读取多行直到EOF,您的代码应采用以下格式:
while(fscanf(data, "%s %s %d", &city1, &city2, &distance)!=EOF) {
/* rest of your logic here */
}