我試圖從一個文件分割像127.0.0.1一個IP地址:使用字符數組拆分IP與strtok的
下面的C代碼:
pch2 = strtok (ip,".");
printf("\npart 1 ip: %s",pch2);
pch2 = strtok (NULL,".");
printf("\npart 2 ip: %s",pch2);
和IP是一個char IP [500 ],包含一個ip。
打印時打印127作爲第1部分,但作爲第2部分打印NULL?
有人可以幫助我嗎?
編輯:
整體功能:
FILE *file = fopen ("host.txt", "r");
char * pch;
char * pch2;
char ip[BUFFSIZE];
IPPart result;
if (file != NULL)
{
char line [BUFFSIZE];
while(fgets(line,sizeof line,file) != NULL)
{
if(line[0] != '#')
{
pch = strtok (line," ");
printf ("%s\n",pch);
strncpy(ip, pch, strlen(pch)-1);
ip[sizeof(pch)-1] = '\0';
//pch = strtok (line, " ");
pch = strtok (NULL," ");
printf("%s",pch);
pch2 = strtok (ip,".");
printf("\nDeel 1 ip: %s",pch2);
pch2 = strtok (NULL,".");
printf("\nDeel 2 ip: %s",pch2);
pch2 = strtok(NULL,".");
printf("\nDeel 3 ip: %s",pch2);
pch2 = strtok(NULL,".");
printf("\nDeel 4 ip: %s",pch2);
}
}
fclose(file);
}
確定嗎?我無法重現錯誤。嘗試顯示ip的初始化。 – effeffe
它怎麼能打印** NULL?你確定這個問題嗎? –
我已經添加了整個代碼,我正在讀取一個主機文件。不知道如何可以打印null ...:s – user1480139