Я получаю очень странное поведение от команды atoi
. Я пытаюсь найти 2 значения вне диапазона в формате [1:2]. Создаваемая строка выполняется с помощью макроса динамического выделения строки (если Sasprintf выдает вас). Однако она будет прочитана из файла в конце проекта. . Во всяком случае, я, кажется, правильно разбираю свою строку, учитывая правильные значения token
и token2
. Однако я сбит с толку, почему звонок atoi
по телефону token2
дал бы мне тарабарщину в ответ. Кроме того, среди всего этого я узнал, что strtok
устарел, я просто еще не удосужился его переключить, пока не решу эту ошибку.
char *token;
char *token2;
int lsb = 0;
int msb = 0;
char *str = NULL;
Sasprintf(str,"[4:0]");
token = strtok(str,"[");
if(token != NULL)
{
token = strtok(token,":");
msb = atoi(token);
printf("%d\n", msb);
token2 = strtok(NULL,"]");
puts(token2);
lsb = atoi(token2);
printf("%d\n",token2);
}
ВЫХОД
4
0
19853443
strtok is deprecated
...как? - person Sourav Ghosh   schedule 10.07.2015printf("%d\n",token2);
должно бытьprintf("%d\n", lsb);
, не так ли? В противном случае вы печатаете целочисленное представление указателя. - person Paul Roub   schedule 10.07.2015strtok
устарело? - person haccks   schedule 10.07.2015man strtok
=›This interface is obsoleted by strsep(3).
- person r3mainer   schedule 10.07.2015