c pointers casting strtok

Error: la asignación hace puntero desde entero sin un molde... en C Prog



pointers casting (2)

Recibo este error cada vez que ejecuto el programa "Asignación hace puntero desde Entero sin un molde". Mi código está escrito a continuación ... Por favor ayuda ... Gracias

struct student { char studentID[6]; char name[31]; char course [6]; }; struct student *array[MAX]; struct student dummy; int recordCtr=0; int read(){ FILE *stream = NULL; int ctr; char linebuffer[45]; char delims[]=", "; char *number[3]; char *token = NULL; stream = fopen("student.txt", "rt"); if (stream == NULL) stream = fopen("student.txt", "wt"); else { printf("/nReading the student list directory. Wait a moment please..."); while(!feof(stream)){ array[recordCtr]=(struct student*)malloc(sizeof(struct student)); while(!feof(stream)) { fgets(linebuffer, 46, stream); token = strtok(linebuffer, delims); //This is where the error appears ctr=0; while(token != NULL){ strcpy(number[ctr], linebuffer); token = strtok(NULL, delims); //This is where the error appears ctr++; } strcpy(array[recordCtr] -> studentID,number[0]); strcpy(array[recordCtr] -> name,number[1]); strcpy(array[recordCtr] -> course,number[2]); } recordCtr++; } recordCtr--; fclose(stream); }


Creo que tu char *number[3]; debe ser el char number[3]; , o al menos debe asignar espacio para cada uno de los 3 punteros number .


No tiene (al menos, no en el código pegado) #include d el encabezado que define la función strtok . En C, se supone que las funciones que aún no han sido creadas como prototipos devuelven int . Por lo tanto, estamos asignando desde un int (resultado de función) a un char* (el tipo de token ) sin un molde.

No queremos un elenco, por supuesto. Queremos #include el encabezado, para que el compilador comprenda qué devuelve strtok .

Pero tampoco queremos usar strtok si hay algo más que haga el trabajo. Tiene numerosas limitaciones que no son obvias. Para un análisis robusto de cadenas, pruebe sscanf .