Kod ten wydaje się działać zgodnie z oczekiwaniami, wypełnia tablicę liczb przy użyciu jednego wskaźnikastrtol ponowne 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;
}
Moje pytanie brzmi:
Jest ważne, aby użyć P jako Param1 (źródło) i & p jako parametr 2 (adres pierwszego nieprawidłowego znaku) w strtol?
Dziękuję Klas, ale co z ograniczającymi słowami kluczowymi? na czas życia wskaźnika, tylko on lub wartość bezpośrednio z niego wyprowadzona (np. Wskaźnik + 1) zostanie wykorzystany do uzyskania dostępu do obiektu, do którego wskazuje, co wydaje się być problemem –
Byłby to problem, gdyby strtol' miałby dostęp do '** endptr', ale tak się nie stało (z powodów wymienionych w moim komentarzu do odpowiedzi Kirilenki). –