У меня есть следующий фрагмент кода C++:Значение, возвращаемое strtok() для токенов длины 0?
string dots="...";
char *points=(char *)malloc(sizeof(char)*20);
strcpy(points,dots.c_str());
points=strtok(points,".");
while(points!=NULL)
{
cout<<points<<endl;
points=strtok(NULL,".");
}
В COUT оператор печатает ничего. Что это за символ, который возвращает cout для сопоставления токенов 0? Я пытался проверить «\ 0», но не работает. Пожалуйста помоги.
EDIT: Комплексная программа для IP-адресов Проверка
#include<iostream>
#include<cstring>
#include<stdlib.h>
using namespace std;
int validateIP(string);
int main()
{
string IP;
cin>>IP;
int result=validateIP(IP);
if(result==0)
cout<<"Invalid IP"<<endl;
if(result==1)
cout<<"Valid IP"<<endl;
return 0;
}
//function definition validateIP(string)
int validateIP(string IP)
{
char ip[16];
int dotCount=0;
strcpy(ip,IP.c_str());
//check number of dots
for(int i=0;i<strlen(ip);++i)
{
if(ip[i]=='.')
{
dotCount++;
}
}
if(dotCount!=3)
return 0;
//check range
char *numToken;
numToken = strtok (ip,".");
while (numToken!= NULL)
{
int number;
if(numToken!=NULL) //check for token of length 0(e.g. case: ...)
number=atoi(numToken); //i also checked for (numToken[0]!='\O')
else return 0;
if(number<0 or number>255)
return 0;
numToken=strtok (NULL,".");
}
return 1;
}
программа печатает ValidIP для ввода: ...
Google для «таНос», вам нужно выделить память для указателя. (и написано «кусок» кода, а не мир). –
Я спешил. Его кусок сейчас. Выделенный Mem. Но все равно? – Madeyedexter
Кстати, я думал, что ваш код был C, если это C++, вы должны использовать новый. –