0
void readStateTransitions(state *s){

    char kok[20];
    char y;

    int j=0;

    do{
        char alpha=' ';
        printf("Enter the alphabet\t ");
        scanf("%c", &alpha );

        //s->TrasitionsArray[j]->label=alpha;

    s->TrasitionsArray[j] = (struct trans*)malloc(sizeof(struct trans));   
    s->TrasitionsArray[j]->from = (struct state *)malloc(sizeof(struct state));
    s->TrasitionsArray[j]->to = (struct state *)malloc(sizeof(struct state));
    printf("For %s",s->label);
    //printf("Enter the next state for %s under %c",StatesArray[i].label,alphabet[j]);

    printf("Enter the next state under %c",alpha);
    scanf("%s",kok);
    for(int k=0;k<StatesNumber;k++){
        if(strcmp(StatesArray[k].label,kok)==0){
            s->TrasitionsArray[j]->to=&StatesArray[k];
        }
    }
    s->TrasitionsArray[j]->from=s;
    s->TrasitionsArray[j]->label=alpha;
    j++;
        printf("\n\n more transitions..??(y/n)");
    }while(getch()=='y');

}

私はこのコードを持っており、ここでユーザーに 2 つの変数を入力するように求めています。

画像リンクhttp://imageshack.us/photo/my-images/194/capturejey.jpg/

4

1 に答える 1

1

最後の \n を消費する必要があります。alpha 変数の単一の文字を読み取りたいだけなので、次のようなものを使用してみてください。

alpha = getchar();
while (getchar() != '\n');
//scanf("%c", &alpha); //Instead of this

ここでコード内でテストしたところ、うまくいきました。

于 2012-07-03T18:18:33.960 に答える