Witam,
mój program działa następująco: użytkownik jest proszony o wprowadzenie wielkości progu ( wartość liczbowa ), jeżeli ktoś zamiast liczb wpisze jakąś literę, program zapętla się całkowicie i trzeba przerwać proces.
Właśnie tu pojawia się mój problem: chciałbym, aby gdy użytkownik NIE wpisze cyfry pojawił się odpowiedni komunikat i prośba o ponowne wprowadzenie danych. Próbowałem skorzystać z funkcji isdigit ale ona podobno sprawdza tylko jedną cyfrę, a nie liczbę.
Proszę o jakąś podpowiedź, chciałbym to zrobić w najbardziej prosty możliwy sposób.
To co tu wkleiłem to jedna z funkcji...
Skompilowany kod w takiej funkcji wyrzuca: naruszenie ochrony pamięci.
int progowanie(t_obraz *obraz)
{
int i, j;
int prog;
int(*obraz_pgm)[obraz->wymy];
obraz_pgm=(int(*)[obraz->wymx]) obraz->obraz_pgm;
printf("Podaj wartość progu:\n");
scanf("%d", &prog);
while(!isdigit(&prog))
{
printf("Wpisz liczbę, a nie znak:\n");
scanf("%d", &prog);
}
while(prog>(obraz->szarosci))
{
printf("Wartość progu większa od maksymalnej skali szarości, spróbuj jeszcze raz.\n");
printf("Podaj wartość progu:\n");
scanf("%d", &prog);
}
for(j=0; j<obraz->wymy; j++)
{
for(i=0; i<obraz->wymx; i++)
{
if(obraz_pgm[i][j]<=prog)
{
obraz_pgm[i][j]=0;
}
if(obraz_pgm[i][j]>prog)
{
obraz_pgm[i][j]=(obraz->szarosci);
}
}
}
return(0);
}
Proszę o pomoc.