I am attempting to edit an array of structs.the user has the ability to enter 3 numbers each of which performes a different action. for example you can add by typing:
1
1234 marvin
all the code for this is below
void input_interpreter()
{
int input;
char inputc1[106];
scanf("%d", &input);
switch(input)
{
case 0 :
/*pretty self explanatory*/
exit(0);
break;
case 1 :
/*add a student to the array*/
scanf("%s", inputc1);
new_student((string_split_string(inputc1),(string_split_int(inputc1)));/*<----the warning points here*/
break;
case 2 :
/*Remove a specified student, (implicitly unenrolling them from all their units, if any), O(S + U).*/
remove();
break;
case 3 :
/*Print, in ascending numerical order of ID number, the ID numbers and names of the students in
the database, O(S).*/
print_array();
break;
}
input_interpreter();
return;
}
'
here is what I use to seperate out the id's and names
int string_split_int(char input_string[])
{
char * ptr;
int ID = 1;
int ch = " ";
int i;
int name_start;
int array_length = sizeof(input_string);
ptr = strchr(input_string, ch);
name_start = array_length - sizeof(ptr); /*may have to change this if names are including namespaces*/
for(i = name_start; i >= array_length; i--)
{
ID=ID/10;
ID=ID+input_string[i];
}
return ID;
}
char string_split_string(char input_string[])
{
char * ptr;
char name[100];
int ch = ' ';
int i;
int name_start;
int array_length = sizeof(input_string);
ptr = strchr(input_string, ch);
name_start = array_length - sizeof(ptr); /*may have to change this if names are including namespaces*/
for(i = name_start; i <= array_length; i++)
{
name[i] = input_string[i];
}
return *name;
}
void new_student(char *name, int ID)
{
struct student s;
s.ID=ID;
s.name=name;
insert_array(s);
return;
}
unfortunatly this throws a passing argument 1 of 'new_student' makes pointer from integer without a cast warning.