0

scanfと2つの文字列に問題があります。

char city1[11], city2[11];
for(int i = 0; i < (m + k); i++) {
scanf("%s %s", city1, city2);
}

(m + k)timmes2つの文字列-cititesの名前を読む必要があります。問題は、私がいくつかの文字列を書くとき、プレスが何も入力しないことです。画面にポインタが表示されていますが、何もできません。scanfの後にprintfで何かを書き込もうとしましたが、機能しません。:/

その他のコード:

int n, m, k;
do {
    scanf("%d %d %d", &n, &m, &k);
} while(n < 2 || n > 10001 || -1 < m || m > 100001 || -1 < k || k > 100001);

city* cities = (city*)malloc(n*sizeof(city));
path* paths = (path*)malloc((m + k)*sizeof(path));
int addCities = 0;
char city1[11], city2[11];
for(int i = 0; i < (m + k); i++) {
    scanf("%s %s", city1, city2);
    printf("ok");

    if(addCities < n && !isListed(cities, n, city1)) { // if city1 is not into cities
        // add it
        strcpy(cities[addCities].name, city1);
        cities[addCities].prev = NO_PARENT;
        addCities++;
    }
    paths[i].i = getCityNumber(cities, n, city1); // number of city1

    if(addCities < n && !isListed(cities, n, city2)) { // if city2 is not into cities
        // add it
        strcpy(cities[addCities].name, city2);
        cities[addCities].prev = NO_PARENT;
        addCities++;
    }
    paths[i].j = getCityNumber(cities, n, city1); // number of city2

    if(i >= m)
        scanf("%d", &paths[i].price);
}
4

2 に答える 2

2

この状態は、期待したものではないことを意味している可能性があります。

while(n < 2 || n > 10001 || -1 < m || m > 100001 || -1 < k || k > 100001)

この条件が真である間、これはn、m、kを要求します。n = 3、m = -1、k = -1と入力すると、次に通過します。

入力に有効なn、m、kの範囲はどれですか?

n> = 2 && n <= 10001、m> = -1 && m <= 100001、k> = -1 && k <= 100001の場合、有効なループは次のようになります。

do {
    scanf("%d %d %d", &n, &m, &k);
} while ( n < 2 || n > 10001 || m < -1 || m > 100001 || k < -1 || k > 100001 );
于 2012-05-19T20:59:06.583 に答える
1

コードでmまたはhを参照していないため、(m + h)を数値10に置き換えました。これがあなたがやりたいことのように見えるいくつかのコードです。このコードは機能します。

#include <string>
#include <stdio.h>

int main(void){
  char city1[11], city2[11];

  for (int i=0;i<10;i++){
    scanf("%s %s",city1,city2);
    printf("city1: %s\n",city1);
    printf("city2: %s\n",city2);
  }


}

出力はこんな感じ。abcasdfcdを入力しました

a b
city1: a
city2: b
c asdf
city1: c
city2: asdf
c
d
city1: c
city2: d

これがお役に立てば幸いです。

于 2012-05-19T20:57:38.267 に答える