Hallo allemaal.
Iedereen die C heeft geleerd kent dat kleine programma waarin de gebruiker om een getal wordt gevraagd wel. Maar is het ook veilig ? Stel dat ik de gebruiker vraag om een unsigned short ( de maximumwaarde is in limits.h vastgelegd op +65535 voor dit type variabel ), maar hij / zij een te groot getal, bijvoorbeeld 1000000 geeft. Kan dit kwaad ? Zal er dan geschreven worden op een geheugenlocatie waar het niet bedoeld is ( bijvoorbeeld in het geheugen van een ander programma, of op het opvolgend element in een array ).
Zo ja, kan dit dan voorkomen worden, in een programma als dit :
#include <stdio.h>
short i;
void set_memory ( char * memory_block, unsigned short value, int size_of_block );
int main ()
{
unsigned short user_input[3];
printf ( "Give three short integer numbers : " );
scanf ( "%d", user_input[0] ); scanf ( "%d", user_input[1] ); scanf ( "%d", user_input[2] );
printf ( "The following numbers have been stored : %d %d %d \n", user_input[0], user_input[1], user_input[2] );
if ( user_input[0] > user_input[1] && user_input[0] > user_input[2] )
set_memory ( ( char * ) user_input, user_input[0], 3 );
else if ( user_input[1] > user_input[0] && user_input[1] > user_input[2] )
set_memory ( ( char * ) user_input, user_input[1], 3 );
else
set_memory ( ( char * ) user_input, user_input[2], 3 );
getchar ();
return 0;
}
void set_memory ( char * memory_block, unsigned short value, int size_of_block );
{
for ( i = 0; i < size_of_block; i++ )
memory_block[i] = value;
}
Alvast bedankt.