2

テキスト ファイルから入力を読み取るにはどうすればよいですか? 入力ファイルは数行の長さで、各行city city distanceは 2 つの都市とそれらの間の距離を表す形式になっています。

入力を読み取るためにいくつかのことを試みましたが、残念ながらそれらはうまくいきませんでした。各行の個々の値を解析する必要があります。(各行は、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++;}
                `
4

1 に答える 1

1

このようなフォーマットされた入力を読み取るには、 fscanfを調べる必要があると思います。

2 つの文字列と 1 つの 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 */
}
于 2012-06-06T17:51:14.407 に答える