#include <stdio.h>
#include <conio.h>
void foo();
int main()
{
foo();
return 0;
}
void foo()
{
char s[3], next;
short count=0;
bool a=false;
for(int i=0; i<3; ++i)
{
printf("Czy %d. sedzia jest na tak? (t/n)\n",i+1);
scanf("%s",&s[i]);
if(s[i]=='t')count++;
}
printf("%d sedziow jest na tak.",count);
if(count>=2)printf(" Zawodnik przechodzi do nastepnej rundy.\n");
else printf(" Zawodnik nie przechodzi do nastepnej rundy.\n");
printf("Nastepny zawodnik? (t/n)\n");
scanf("%s",&next);
if(next=='t')a=true;
if(a=true)foo();
}
Jeśli w przedostatniej linijce jest if(a=true)foo(); to program działa. Gdy jest usuniete "=true" to jest takie coś:
Odpalenie programu: wpisanie 'g', enter i tak trzy razy i pokazuje sie error "Run-Time Check Failure #2 - Stack around the variable 'next' was corrupted."
Taki sam error jeśli bym nie miał w programie zmiennej "a" i by na końcu by było tylko if(next=='t')foo();
Kompilowane w Visual C++ 2010 Express. Kolega na linuxie nie ma żadnych errorów z tym programem, niezaleznie od tego co jest w przedostatniej linijce.