Questo codice sembra funzionare come previsto, popola una matrice di numeri utilizzando un unico puntatorestrtol riutilizzo param
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
int main(void)
{
int arr[4], count = 0, i;
char *p, s[32] = " \t 10, 15 \n ,20, 25 , ";
p = s;
do {
arr[count++] = (int)strtol(p, &p, 10);
while (isspace(*p) || *p == ',') p++;
} while (*p);
for (i = 0; i < count; i++) {
printf("%d\n", arr[i]);
}
return 0;
}
La mia domanda è:
E 'valido da usare p come param1 (sorgente) e & p come parametro 2 (indirizzo del primo carattere non valido) in strtol?
Grazie Klas, ma per quanto riguarda le parole chiave restrittive? per la durata del puntatore, solo esso o un valore direttamente derivato da esso (come puntatore + 1) verrà utilizzato per accedere all'oggetto a cui punta, che sembra essere un problema –
Sarebbe un problema se ' strtol' accederà a '** endptr', ma non lo fa (per i motivi che ho menzionato nel mio commento alla risposta di Kirilenko). –