У меня этот код, функция strtol получает двойной указатель, и предполагается, что строка «prueba» является указателем, указывающим на адрес памяти первого элемента строки (который является тем же адресом памяти вся цепь), то это, как если бы оно было пропусканием реж указателя, я не знаю, если я объясню, во всяком случае это не работает:/выдает предупреждение здесьПочему я не могу передать адрес цепочки? Strtol
ret = strtol(str, &prueba, 10);
длинный ИНТ strtol (const char * str, char ** endptr, int base)
strtol преобразует начальную часть строки в str в длинный int va в соответствии с данной базой. «endptr» his - это ссылка на объект типа char *, значение которого задается функцией следующим символом в str после численного значения.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[30] = "2030300 This is test";
char prueba[20];
char *ptr;
long ret;
printf("\nLa cadena inicial es: %c%s%c\n",34,str,34);
ret = strtol(str, &ptr, 10);
printf("\nThe number(unsigned long integer) is %ld\n", ret);
printf("String part is |%s|\n", ptr);
ret = strtol(str, &prueba, 10);
printf("\nProbando: %c%s%c\n",34,prueba,34);
return(0);
'& prueba' является указателем на массив из 20' char's. –
'& prueba' не является символом' char ** '. Это 'char (*) [20]'. То есть, это указатель на массив. Вы должны объявить как: 'char * prueba;' – kaylum
, но если я объявляю char * prueba, это указатель на массив.как char prueba [20] – EmiliOrtega