Przerwanie pętli po pobraniu znaków

0

nie z zanleceniem:

Shalom napisał(a)

Nowy problem -> nowy temat. Inaczej wyszukiwarka forumowa ma problem i ktoś kto będzie miał taki sam problem jak ty też założy nowy temat bo nie będzie w stanie znaleźć odpowiedzi...
To jest właśnie zaśmiecanie forum!

mamma napisał(a)

Witam jeśli można to żeby nie zaśmiecać forum, chciał bym w tym topicu czasem zapytać o wskazówkę ;]
kolejny dzień, przyniósł kolejny problem;/ ale początki zawsze są chyba ciężkie ;/ mianowicie jak mam przerwac pętlę gdy pobiorę potrzebne znaki do tablicy ? oto moja nie działająca wersja :

 printf("Podaj tekst (32znaki):");
   
    for (i=0;i<32;i++){
     if (i==30){
printf("nacisnij ENTER");
getch();
break;
}
     
      tekst[i] = getchar();
if (tekst[i] == '\n')break;

}
Shalom napisał(a)

A twój problem polega na tym że getchar() czeka na enter zanim zacznie coś wczytywać i nie chroni cię to przed podaniem > 32 znaków.

Ad. Próbowałem jednak na początku inaczej :

   for (i=0;i<32;i++){
     if (i==30){
printf("nacisnij ENTER");
getch();
break;
}
     scanf("%c",&znak);
      tekst[i] = znak;
if (tekst[i] == '\n')break;

}

i tez niedzałało ;/

0

Bo scanf nie pobiera znaku nowej linii ;] więc warunek nigdy nie będzie spełniony. Poza tym scanf też czeka na potwierdzenie wpisywania za pomocą entera.
Mógłbyś tu użyć tego nieszczęsnego getch() na przykład albo getc()

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