Ok, now, I wouldnt normally do this, but I dont understand why this isnt working. Now, I know my getmask() function does practically nothing, but it serves its purpose for now. What my real problem is, is that when I try to strtok cSM, it seg faults. This is the EXACT SAME THING I am doing above with cIP, only difference is I'm taking the value from argv (which, I'm also going to add, when I change where Im getting cIP from (from argv to simple cIP="192.168.0.1") it crashes there too!). So my problem is, why the hell is strtok crashing? It's a char* filetype, so there shouldnt be ANY problems.
HELP!!!
Code:#include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> char* getmask(int nCIDR); int main(int argc, char* argv[]) { int i; int nCIDR; int anIP[3]; int anSubMask[3]; char* cIP; char* cSM; char* ctemp; int ntemp; /*Make sure all arguments are there*/ if (argc!= 3) { printf("Invalid number of arguments inputted.\nPlease run program again.\nEnding program\n"); exit(1); } else { /*Copies in CIDR*/ nCIDR=atoi(argv[2]); /*Copies in IP as CHAR*/ cIP=argv[1]; printf("IP: %s\nCIDR: %d\n", cIP, nCIDR); /*Checks to see if CIDR is correct*/ if (nCIDR<0 || nCIDR>32) { printf("Please use a proper CIDR\nEnding program\n"); exit(1); } } /*Convert IP to INT's*/ anIP[0]=atoi(strtok(cIP, ".")); /*Loop through and get rest of IP*/ for(i=1; i!=4; i++) anIP[i]=atoi(strtok(NULL, ".")); printf("The four parts of the IP address is...\n1: %d\n2: %d\n3: %d\n4: %d\n",anIP[0],anIP[1],anIP[2],anIP[3]); /*Get the Subnet Mask*/ cSM=getmask(nCIDR); printf("Toking up with SubMask: %s\n", cSM); ctemp=strtok(cSM,"."); printf("Stoned!"); anSubMask[0]=atoi(ctemp); printf("BAM!\n"); /*Loop through and get rest of IP*/ /*for(i=1; i!=4; i++) anSubMask[i]=atoi(strtok(NULL, ".")); printf("The four parts of the IP address is...\n1: %d\n2: %d\n3: %d\n4: %d\n",naIP[0],naIP[1],naIP[2],naIP[3]); printf("The four parts of the SubNet Mask is...\n1: %d\n2: %d\n3: %d\n4: %d\n",anSubMask[0],anSubMask[1],anSubMask[2],anSubMask[3]); */ return(0); } char* getmask(int nCIDR) { char* cMask; cMask="255.255.255.0"; return(cMask); }



LinkBack URL
About LinkBacks


