C zagnieżdżenie scanf

0

Witam mam problem z zagnieżdżeniem funkcji scanf, a dokładnie gdy używam jej pod postacią taką aby wczytywała spacje czyli

scanf("%[^\n]s", tekst);

Gdy używam jej normalnie w main() to działa poprawnie lecz przykładowo wewnątrz mojej własnej funkcji lub w switch wysypuje krzaki, czym to jest spowodowane?

1

To spowodowane błędem w 27-mym wierszu.

0

to działa poprawnie

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

main ()
{ 
char tekst[80];
 printf("Podaj Wartosc:\n");
    scanf("%[^\n]s", tekst);
    printf("%s",tekst);
  getch();
}

A to krzaki

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

main ()
{ 
  int x;
scanf("%d", &x);
char tekst[80];

switch(x)
{
  case 1:
    printf("Podaj Wartosc:\n");
    scanf("%[^\n]s", tekst);
    printf("%s",tekst);
    break;
  default:
    printf("Wybrales nieodpowiednia opcje");
    break;
}
  getch();
}
1

Tutaj nie podajesz wartości tylko automatycznie wstawia wcześniej wciśnięty enter po podaniu jedynki do switcha i go wypisuje.

printf("Podaj Wartosc:\n");
scanf("%[^\n]s", tekst);
2

Sęk w tym że po wprowadzeniu liczby zostaje w buforze klawiatury enter, który można zignorować wstawiając dodatkową spacje w formacie scanf'a
http://ideone.com/zx0pDg

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