Inicio
Buscar
Ingresar
Registrarse
Hack x Crack - Comunidad de Seguridad informática
»
Programación
»
C / C++
»
ejercicio punteros y estructuras
Imprimir
Páginas: [
1
]
Ir Abajo
Autor
Tema: ejercicio punteros y estructuras (Leído 1584 veces)
CoZarmo
{ L0 } Ñuub
Mensajes: 3
ejercicio punteros y estructuras
«
en:
Septiembre 14, 2018, 11:03:08 pm »
Buenas tardes, veran
tengo que hacer el siguiente programa:
"Escribir un programa que pregunte por el nombre (nombre y apellido paterno) de un estudiante y que busque en un archivo estudiantes.in e imprima en la pantalla toda su informacion. Nota: Cada informacion del estudiante esta separada unicamente por el caracter *".
Ya tengo este codigo:
#include <stdio.h>
#include <stdlib.h>
#define NET 2
#define MAX 16
#define MAXNOM 50
typedef char Tstring[MAX];
typedef struct
{
char camp1[MAX];
}Tname;
typedef struct
{
Tname name;
Tstring camp2;
Tstring camp3;
Tstring camp4;
}Tetiqueta;
struct Tdata
{
int Netiqueta;
Tetiqueta tabla [MAX];
};
void main()
{
FILE *fe;
struct Tdata data;
char k;
int i,n;
fe = fopen("estudiantes.in", "r");
if (fe == NULL)
{
printf("\nError abriendo fichero\n");
return;
}
n=0;
while( (n<NET) && (!feof(fe)) )
{
fscanf(fe, "%[^\n]\n", data.tabla[n].name.camp1);
fscanf(fe, "%[^\n]\n", data.tabla[n].camp2);
fscanf(fe, "%[^\n]\n", data.tabla[n].camp3);
fscanf(fe, "%[^\n]\n", data.tabla[n].camp4);
fscanf(fe,"*\n");
n++;
}
printf("Dame el nombre del estudiante: ");
scanf("%s",&k);
for(i=0; i<NET; i++)
{
if(k==data.tabla.name.camp1)
{
printf("%s\n", data.tabla.name.camp1);
printf("%s\n", data.tabla.camp2);
printf("%s\n", data.tabla.camp3);
printf("%s\n", data.tabla.camp4);
}
}
fclose(fe);
return;
}
pero me aparece el un error en if(k==data.tabla.name.camp1)
si me pueden ayudar, se los agradecere mucho
En línea
Villano
{ L2 } Nativo Digital
Mensajes: 126
Re:ejercicio punteros y estructuras
«
Respuesta #1 en:
Septiembre 17, 2018, 01:05:37 pm »
¿Y que error te tira el compilador?. Es importante.
En línea
dbbeltran
{ L0 } Ñuub
Mensajes: 4
Re:ejercicio punteros y estructuras
«
Respuesta #2 en:
Septiembre 20, 2018, 07:30:14 am »
Hola buenas ,
hay varios problemas en tu código y que claramente te llevan al error en en " if(k==data.tabla.name.camp1) ".
Lo primero es que debe aprender a indentar, comentar el código y definir las variables con un nombre que represente el uso de ella ( no solo por una letra ) . Siempre es bueno que esté ordenado para que sea entendible para otras personas y para uno mismo.
En cuanto al error, se produce por que está tratando de comparar un solo caracter con una cadena de caracteres (palabra), y esto ocurre debido a que la variable "k" esta definida como caracter y no como una cadena de caracteres "char k;", esto quiere decir que
cuando se pregunta por el nombre del alumno en "scanf("%s",&k);" esto solo guardará el primer caracter del nombre y no el nombre completo, eso en resumen es el error.
Entonces, para solucionar hay que empezar por guardar bien el nombre del alumno en un arreglo de caracteres algo como "char k[20];" , pero también hay que tener en cuenta que para comparar arreglos de caracteres no es igual que comparar un solo caracter, por ejemplo si tienes una variable "char a" y "char b" para compararlas lo haces "if ( a == b)", pero, si estos fueran arreglos (o cadenas de caracteres) "char arreglo1[20]" y "char arreglo2[20]" no podrías hacer "if (arreglo1 == arreglo2)", eso sería un error, lo que habría que hacer es incluir la librería "string.h" y hacer uso de sus funciones que operan sobre arreglo de caracteres
http://c.conclase.net/librerias/index.php?ansilib=string#inicio
en este sitio puede ver cuales son las funciones disponibles y algunos ejemplos, las que te puede ayudar son:
strcpy (arreglo1, arreglo 2) // copia arreglo1 en arreglo2.
strcmp (arreglo1, arreglo2) // compara arreglo1 con arreglo2.
strlen(arreglo) // te calcula el largo del arreglo.
etc..
Si necesita otra función puede buscarla dentro del sitio o en otro, hay mucho material en internet sobre manejo de arreglos o cadenas de caracteres.
Espero que se entienda lo que traté de explicar, pero tiene que empezar por eso.
Saludos
En línea
Imprimir
Páginas: [
1
]
Ir Arriba
Hack x Crack - Comunidad de Seguridad informática
»
Programación
»
C / C++
»
ejercicio punteros y estructuras
Va un mudo y le dice a un sordo: Hack x Crack usa cookies. Pues eso...
OK
Learn more