Mi serviva una funzione per immettere dei dati numerici liberamente.
Allora mi servo di questa funzione parsestring:
int ParseString(char * s, int * a, int * nMin, int * nMax)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; }
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?

Rispondi quotando