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
.