sirve significa que para ingles etiqueta español codigo caracteristicas cabecera c loops structure dynamic-memory-allocation

significa - que es title



¿Cómo uso una estructura? (3)

El primer problema es que tiene nombres de variables iguales que el nombre del tipo. Aunque puede tener eso en C hasta cierto punto, como:

typedef int x; x foo (x x) { return x; }

Puede ser una buena idea no hacer esto para la legibilidad. Entonces en tu caso tienes:

int * studentData= NULL; int * studentDataType= NULL;

que es un nombre de variable, entonces tienes:

struct studentDataType ...

que es un nombre del tipo (se debe usar como struct studentDataType, no sin struct como se hace); finalmente

studentDataType *studentData = ...

es tratado por el compilador como una operación en dos variables, no una declaración de tipo como es de esperar. Entonces su asignación de memoria debe ser:

struct studentDataType *studentData = malloc(numberOfStudents *sizeof(struct studentData));

Lo cual trae un problema que redefine studentData, que usted declaró al comienzo del programa, y ​​"numberOfStudents" no está definido, probablemente usted quería escribir "students" en su lugar.

En cuanto a los datos de lectura con scanf, vea el comentario anterior.

Ok, primero explicaré mi tarea. Para esta tarea, tengo que usar la asignación de memoria dinámica con la que no tengo problemas. Lo que estoy teniendo un problema es averiguar la forma correcta de trabajar en mi tarea. Para mi tarea, necesito crear un programa que solicite al usuario ingresar cuántos estudiantes tienen y luego solicitar la siguiente información; ID de estudiante, fecha de nacimiento y número de teléfono. Necesito usar un ciclo para solicitar al usuario que ingrese toda la información de los estudiantes. Necesito crear un bucle que escanee todas las identificaciones de los estudiantes y encuentre al estudiante más viejo usando su fecha de nacimiento (El ciclo debe poder escanear más de 3 estudiantes).

Aquí está mi código, he recibido algunas sugerencias e incluso fragmentos de código de ustedes, pero después de implementarlos estoy aún más confundido sobre lo que debería hacer. Por favor, échale un vistazo y critícame.

EDITAR: También agregué el código donde estoy recibiendo y el error

Gracias.

#include <stdio.h> #include <stdlib.h> int main (void) { int * studentData= NULL; int * studentDataType=NULL; int students; int studentID; int year; int month; int day; long long phone; printf("How many students are you entering records for:/n"); scanf("%d", &students); studentData=(int*)malloc((sizeof(int)*students)); struct studentDataType { int studentID; int year; int month; int day; long long phone; }; //invalid operands to binary * (have ''int'' and ''int *'') studentDataType *studentData = (studentDataType*)malloc(numberOfStudents *sizeof(studentData)); for (int i = 0 ; i < students ; ++i) { printf("%d, %d, %d, %d, %d/n", studentID, year, month, day, phone); } }


Estás redefiniendo studentData

int * studentData= NULL;

Entonces despúes

studentDataType *studentData = (studentDataType*)malloc(numberOfStudents * sizeof(studentData));

Debe declarar studentDataType estructura studentDataType (fuera de main() ) y luego usarla en su declaración original.


Para ver la tarea, es mejor al menos por primera vez escribir algún esquema de bloques de lo que tiene que hacer en un programa. En tu caso:

  1. Leer datos del usuario (cada estructura).
  2. Aumente el tamaño de la matriz, agregue nueva estructura.
  3. Bucle 1-2 hasta que el usuario de la entrada termine de agregar nuevas personas (necesita alguna condición aquí para terminar).
  4. Encuentra la estructura necesaria e imprímela.

Entonces, el primer paso es leer la información del usuario. Puede usar scanf (): de la forma más simple puede hacerlo paso a paso para cada campo:

#include <stdio.h> ... int value; scanf("%d", &value); ...

En caso de éxito, esta función debe devolver el número de elementos que lee (1 en su caso). Para el teléfono, debe usar scanf ("% ld", & phone).

Para cambiar el tamaño de la función de uso del array, realloc () (#include:

realloc(&ptr_to_array, new_size);

Cada elemento de la matriz es un puntero a la estructura "estudiante". Los próximos pasos son similares.