Mi serviva una funzione per immettere dei dati numerici liberamente.
Allora mi servo di questa funzione parsestring:
codice:
int ParseString(char * s, int * a, int * nMin, int * nMax)
{
int nRet = 0;
int i = 0;
int j = 0;
char strInt[12];
int num;
while ( 1 )
{
/*
if ( isdigit( *(s + i) ) )
{
*(strInt + j) = *(s + i);
++j;
}
*/
if ( isdigit( *(s + i) ) || *(s + i) == '-' )
{
if ( (*(s + i) == '-') && (i > 0) )
{
if ( *(s + i - 1) != ' ' )
return 0;
}
*(strInt + j) = *(s + i);
++j;
}
else if ( *(s + i) == ' ' || *(s + i) == '\0' )
{
*(strInt + j) = '\0';
if ( strlen(strInt) > 0 )
{
if ( a )
{
num = atoi(strInt);
a[nRet] = num;
if ( nRet == 0 )
{
*nMin = num;
*nMax = num;
}
else
{
*nMin = num < *nMin ? num : *nMin;
*nMax = num > *nMax ? num : *nMax;
}
}
++nRet;
j = 0;
*strInt = '\0';
}
}
else
{
return 0;
}
if ( *(s + i) == '\0' )
break;
++i;
}
return nRet;
}
int ParseString(char * s, int * a, int * nMin, int * nMax)
viene dichiarato un puntatore a int di nome a
ma quando si usa if(a) significa che viene verificato se l'indirizzo di memoria del puntatore a e' diverso da zero?
E poi e' scritto a[nRet] = num; ma a non era stato dichiarato come array,ma come puntatore.
Sapete come mai?