Scanf psuje zagnieżdżoną pętlę

0

Witam, piszę tutaj pierwszy raz :).
Może mi ktoś wytłumaczyć, dlaczego taki kod:

#include <stdio.h>

int main()
{
int i1;
int i2;
    scanf("%i", &i1);
    for(int i=1; i<=i1; i=i+1){

            scanf("%i", &i2);
            printf("petla1\n");

            for(int z=1; z<=i2; z=z+1){
                printf("petla2\n");
            }
    }
} 

Działa prawidłowo, ale już to:

 #include <stdio.h>

int main()
{
int i1;
int i2;
char t;

    scanf("%i", &i1);
    for(int i=1; i<=i1; i=i+1){
            scanf("%i", &i2);
            printf("petla1\n");
            for(int z=1; z<=i2; z=z+1){
                scanf("%s", &t);
                printf("petla2\n");
                printf("Podaj typ obiektu");
            }
    }
}

Scanf, który wprowadza znak do zmiennej t powoduje, że pętla nr 2 wykonuje się tylko 1 raz lub półtora raz??

0

uzyj schematu jednego z ponizszych
char tekst[123]; // tekst o dlugosci 123
scanf(" %s",tekst); // spacja powoduje zignorowanie bialych znakow, %s - wczytanie calego wyrazu (musisz miec pewnosc ze wyraz jest krotszy niz 122 znaki)

char znak;
scanf(" %c", &znak); // spacja w scanf zignoruje biale znaki, a %c wczytanie jednego znaku

w jaki sposob jakakolwiek petla moze sie wykonac poltora razu?

0

Ok dzięki " %c" pomogło. Pomyliło mi się z tym półtora razy, długo by tłumaczyć :P.

1 użytkowników online, w tym zalogowanych: 0, gości: 1