Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Emoticones en vez de Numeros y buscar elementos

Estas en el tema de Emoticones en vez de Numeros y buscar elementos en el foro de C/C++ en Foros del Web. Hola buenas, tengo una mega duda, aguien sabe porque me salen emoticones en vez de numeros, ya cheque y cheque y no puedo encontrar nada, ...
  #1 (permalink)  
Antiguo 05/03/2015, 13:10
 
Fecha de Ingreso: marzo-2015
Mensajes: 4
Antigüedad: 9 años, 2 meses
Puntos: 0
Pregunta Emoticones en vez de Numeros y buscar elementos

Hola buenas, tengo una mega duda, aguien sabe porque me salen emoticones en vez de numeros, ya cheque y cheque y no puedo encontrar nada, tambien quiero agregar a opcion de que busque datos en e archivo agregando la opcion al menu, pero no tengo idea de como hacerlo,
GRACIAS



Ese es es programa


#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

void Menu();
void CrearArchivo(FILE *Archivo);
void VerDatos(FILE *Archivo);
void InsertarDatos(FILE *Archivo);
void VerDatos(FILE *Archivo);

struct sRegistro
{
char Tipo [25];
int Numero[25];
char Nombre[25];
char Fabrica[25];
char Tamano[25];
int Venta[25];
int Compra[25];

}registro;

int main()
{
system("color 0b";);
int opcion,exit=0;
FILE *archivo;
while(!exit)
{
Menu();
printf("nOpcion: ";);
scanf("%d",&opcion);
switch(opcion)
{
case 1:
CrearArchivo(archivo);
break;
case 2:
InsertarDatos(archivo);
break;
case 3:
VerDatos(archivo);
break;
case 4:
exit=1;
break;
default:
printf("nopcion no valida";);
}
}
return 0;
}
void Menu()
{
printf("nMenu: ";);
printf("nt 1.-Crea archivo ";);
printf("nt 2.-Insertar Datos";);
printf("nt 3.-Ver Datos ";);
printf("nt 4.-Salir ";);
}
void CrearArchivo(FILE *Archivo)
{
Archivo=fopen("Ejemplo.txt","r";);
if (!Archivo)
{
Archivo=fopen("Ejemplo.txt","w";);
printf("nArchivo creado!";);
}
else
{
printf("nEl archivo ya existe!";);
}
fclose (Archivo);
return;
}

void InsertarDatos(FILE *Archivo)
{
Archivo=fopen("Ejemplo.txt","a";);
if(Archivo==NULL)
{
printf("n Archivo no existe! n Por favor creelo";);
return;
}
printf("nTipo de Refreso :";);
scanf("%s",registro.Tipo);
printf("nNumero de Refresco: ";);
scanf("%d",&registro.Numero);
printf("nNombre de Refresco : ";);
scanf("%s",&registro.Nombre);
printf("nCompania que lo Fabrica :";);
scanf("%s",registro.Fabrica);
printf("nTamano :";);
scanf("%s",registro.Tamano);
printf("nPrecio de Venta :";);
scanf("%s",registro.Venta);
printf("nPrecio de Compra :";);
scanf("%s",registro.Compra);
fwrite(&registro, sizeof(struct sRegistro), 1,Archivo);
fclose(Archivo);
return;
}
void VerDatos(FILE *Archivo)
{
int numero=1;
Archivo=fopen("Ejemplo.txt","r";);
if (Archivo==NULL)
{
printf("n Archivo no existe! n Por favor creelo";);
return;
}
fread(&registro, sizeof(struct sRegistro), 1,Archivo);
printf("nTipo tNumero tNombre tFabrica tTamano tVenta tCompra";);
while(!feof(Archivo))
{
printf("n%s t%s t%s t%s t%s t%s t%s ",registro.Tipo,
registro.Numero,registro.Nombre,registro.Fabrica,r egistro.Tamano,
registro.Venta,registro.Compra);
fread(&registro, sizeof(struct sRegistro), 1, Archivo);
numero++;
}
fclose(Archivo);
return;
}
  #2 (permalink)  
Antiguo 05/03/2015, 16:28
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 2 meses
Puntos: 3
Respuesta: Emoticones en vez de Numeros y buscar elementos

a ver, tienes varios fallos, los int de la estructura no tienen que ser arrais ya que solo necesitas 1 por campo. Las que contengan cadenas tienen que ser arrais de caracteres y esa parte está bien. Despues cuando pides los datos, si pides una cadena de caracteres y se va a guardar en un array de caracteres, no lleva el & ya que ya apunta a la direccion del primer caracter. Cuando pides un entero, en la mascara de scanf usa %i en vez de %s, el %i es para enteros con signo y el %s para cadenas. Ademas, tienen que ir la variable con el &. No he podido ver mas porque en el movil se ve mal pero prueba a cambiar todo eso y cuentas.
  #3 (permalink)  
Antiguo 05/03/2015, 22:43
 
Fecha de Ingreso: marzo-2015
Mensajes: 4
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Emoticones en vez de Numeros y buscar elementos

Muchas gracias, ya cambie y el problema era que devc++ me corria con emoticones, lo probe con codeblock y zinjal y ya parecen los numeros, ahora mi problema es hacer para que busquen datos
  #4 (permalink)  
Antiguo 06/03/2015, 08:46
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 2 meses
Puntos: 3
Respuesta: Emoticones en vez de Numeros y buscar elementos

A ver, lo que quieres hacer es leer un registro de un archivo secuencial, ya que usas una estructura para escribir en el archivo y cada registro midira lo mismo.
Te explico como hacerlo:
1-Abres el archivo con fopen.
2-Obtienes su tamaño en bytes con fseek y ftell.
3-Divides el tamaño del archivo por el tamaño de la estructura (tamFile / sizeof(sRegistro)).
4-Ahora por ejemplo ya podrias indicar el numero del registro a mostrar, o sea, puedes indicar si quieres mostrar el registro 3, o el 4 o el que sea. Para ello usas fseek ( pFile , sizeof(sRegistro) * pos , SEEK_SET ) donde "pos" sería el indice y siendo el primero 0. Luego usas fread para leer 1 registro y obtendrás el que indicaste con el indice.
5-Cierras el archivo con fclose.

Si lo que quieres es buscar un nombre pues es tan simple como usar lo mismo de arriba pero en un bucle que vaya leyendo todos los registros y vas comparando el nombre indicado con el de cada registro hasta que lo encuentres o hasta que llegues al final del archivo. Para saber si llegas al final usas foef. Para comparar usa strcmp o strncmp.
Si deseas buscar una cadena dentro de un nombre debes usar strstr el cual busca una cadena dentro de otra y así podrias mostrar por ejemplo todos los registros que contengan esa cadena en el nombre. Si no das con como hacerlo avisa.
  #5 (permalink)  
Antiguo 06/03/2015, 11:49
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 2 meses
Puntos: 3
Respuesta: Emoticones en vez de Numeros y buscar elementos

Prueba esto:
Código PHP:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>

#define MAXLENGTH 9
//----------------------------------------------------------------------------
typedef struct
{
   
char Tipo[MAXLENGTH];
   
int Numero;
   
char Nombre[MAXLENGTH];
   
char Fabrica[MAXLENGTH];
   
char Tamanio[MAXLENGTH];
   
int Venta;
   
int Compra;
}
sRegistro;

sRegistro registro;
void Menu(void);
void CrearArchivo(FILE *Archivo);
void VerDatos(FILE *Archivo);
void InsertarDatos(FILE *Archivo);
void VerDatos(FILE *Archivo);
void LeerRegistroX(FILE *Archivo);
void BuscarNombre(FILE *Archivo);
void MostrarRegistro(sRegistro registro);
//----------------------------------------------------------------------------

int main()
{
   
int opcion,exit=0;
   
FILE *archivo;

   
system("color 0b");
   while(!exit)
   {
      
Menu();
      
printf("\nOpcion: ");
      
scanf("%d",&opcion);
      switch(
opcion)
      {
         case 
1:
            
CrearArchivo(archivo);
            
printf("\n\n");
            
system("PAUSE");
            
system("CLS");
            break;
         case 
2:
            
InsertarDatos(archivo);
            
printf("\n\n");
            
system("PAUSE");
            
system("CLS");
            break;
         case 
3:
            
VerDatos(archivo);
            
printf("\n\n");
            
system("PAUSE");
            
system("CLS");
            break;
         case 
4:
            
LeerRegistroX(archivo);
            
printf("\n\n");
            
system("PAUSE");
            
system("CLS");
            break;
         case 
5:
            
BuscarNombre(archivo);
            
printf("\n\n");
            
system("PAUSE");
            
system("CLS");
            break;
         case 
6:
            exit=
1;
            break;
         default:
            
printf("\nopcion no valida");
      }
   }
   return 
0;
}
//----------------------------------------------------------------------------

void Menu(void)
{
   
printf("\nMenu: ");
   
printf("\n\t 1.-Crea archivo ");
   
printf("\n\t 2.-Insertar Datos");
   
printf("\n\t 3.-Ver Datos");
   
printf("\n\t 4.-Mostrar un registro");
   
printf("\n\t 5.-Buscar por nombre");
   
printf("\n\t 6.-Salir ");
}
//----------------------------------------------------------------------------

void CrearArchivo(FILE *Archivo)
{
   
Archivo=fopen("Ejemplo.txt","r");
   if (!
Archivo)
   {
      
Archivo=fopen("Ejemplo.txt","w");
      
printf("\nArchivo creado!");
   }
   else
   {
      
printf("\nEl archivo ya existe!");
   }
   
fclose (Archivo);
}
//----------------------------------------------------------------------------

void InsertarDatos(FILE *Archivo)
{
   
Archivo=fopen("Ejemplo.txt","a");
   if(
Archivo==NULL){
      
printf("\nArchivo no existe! n Por favor creelo");
   }else{
      
printf("\nTipo de Refreso :");
      
fflush(stdin);
      
fgets(registro.TipoMAXLENGTHstdin);
      
registro.Tipo[strlen(registro.Tipo)-1]='\0';
      
printf("\nNumero de Refresco: ");
      
fflush(stdin);
      
scanf("%d", &registro.Numero);
      
printf("\nNombre de Refresco : ");
      
fflush(stdin);
      
fgets(registro.NombreMAXLENGTHstdin);
      
registro.Nombre[strlen(registro.Nombre)-1]='\0';
      
printf("\nCompania que lo Fabrica :");
      
fflush(stdin);
      
fgets(registro.FabricaMAXLENGTHstdin);
      
registro.Fabrica[strlen(registro.Fabrica)-1]='\0';
      
printf("\nTamano :");
      
fflush(stdin);
      
fgets(registro.TamanioMAXLENGTHstdin);
      
registro.Tamanio[strlen(registro.Tamanio)-1]='\0';
      
printf("\nPrecio de Venta :");
      
fflush(stdin);
      
scanf("%d",&registro.Venta);
      
printf("\nPrecio de Compra :");
      
fflush(stdin);
      
scanf("%d",&registro.Compra);
      
fwrite(&registrosizeof(registro), 1,Archivo);
      
fclose(Archivo);
   }
}
//----------------------------------------------------------------------------

void VerDatos(FILE *Archivo)
{
   
int nReads;
   
Archivo=fopen("Ejemplo.txt","r");
   if (
Archivo==NULL){
      
printf("\nArchivo no existe! n Por favor creelo");
   }else{
      
printf("\nTipo       Numero  Nombre    Fabrica    Tamano       Venta      Compra");
      do{
         
nReads fread(&registrosizeof(registro), 1,Archivo);
         if(
nReads == 1){
            
MostrarRegistro(registro);
         }
      }while(!
feof(Archivo));
      
printf("\n");
      
fclose(Archivo);
   }
}
//----------------------------------------------------------------------------

void LeerRegistroX(FILE *Archivo)
{
   
int sizenRegistrospos=0nReads;

   
Archivo=fopen("Ejemplo.txt","r");

   if (
Archivo==NULL){
      
printf("\nArchivo no existe! n Por favor creelo");
   }else{
      
fseek(Archivo SEEK_END);
      
size ftell(Archivo);
      
nRegistros size/sizeof(registro);

      if(
nRegistros 0){
         
printf("Introduce el numero de registro a mostrar: ");
         
scanf("%d",&pos);
         if(
pos || pos >= nRegistros){
            
printf("\nEl registro elegido no existe.");
         }else{
            
printf("\nTipo       Numero  Nombre    Fabrica    Tamano       Venta      Compra");
            
memset(&registro0sizeof(registro));
            
fseek(Archivo sizeof(registro)*posSEEK_SET);
            
nReads fread(&registrosizeof(registro), 1Archivo);
            if(
nReads == 1){
               
MostrarRegistro(registro);
            }
         }
      }
      
fclose(Archivo);
   }
}
//----------------------------------------------------------------------------

void BuscarNombre(FILE *Archivo)
{
   
int sizenRegistrosnReadscontador=0;
   
char cadena[8];
   
char *encontrado;

   
Archivo=fopen("Ejemplo.txt","r");

   
memset(cadena0sizeof(cadena));
   
fflush(stdin);
   
printf("Introduce el nombre o parte de el: ");
   
fgets(cadena,MAXLENGTH,stdin);
   
fflush(stdin);
   if (
Archivo==NULL){
      
printf("\nArchivo no existe! n Por favor creelo");
   }else{
      
fseek(Archivo SEEK_END);
      
size ftell(Archivo);
      
nRegistros size/sizeof(registro);
      
fseek(Archivo 0SEEK_SET);
      
cadena[strlen(cadena)-1]='\0';
      if(
nRegistros 0){
         
printf("\nTipo       Numero  Nombre    Fabrica    Tamano       Venta      Compra");
         do{
            
memset(&registro0sizeof(registro));
            
nReads fread(&registrosizeof(registro), 1Archivo);
            if(
nReads == 1){
               
encontrado strstr(registro.Nombre,cadena);

               if(
encontrado != NULL){
                  
MostrarRegistro(registro);
                  
contador++;
               }
            }
         }while(!
feof(Archivo));
      }
      if(
contador == 0)
         
printf("\n\nNo se encontro ningun registro con ese nombre.");
      
fclose(Archivo);
   }
}
//----------------------------------------------------------------------------

void MostrarRegistro(sRegistro registro)
{
   
int largo,nMods;

   
largo strlen(registro.Tipo);
   
nMods MAXLENGTH-largo-1;
   if(
nMods 0)
      
memset(&registro.Tipo[largo], ' ',nMods);
   
largo strlen(registro.Nombre);
   
nMods MAXLENGTH-largo-1;
   if(
nMods 0)
      
memset(&registro.Nombre[largo], ' ',nMods);
   
largo strlen(registro.Fabrica);
   
nMods MAXLENGTH-largo-1;
   if(
nMods 0)
      
memset(&registro.Fabrica[largo], ' ',nMods);
   
largo strlen(registro.Tamanio);
   
nMods MAXLENGTH-largo-1;
   if(
nMods 0)
      
memset(&registro.Tamanio[largo], ' ',nMods);

   
printf("\n%s   %d\t   %s  %s   %s     %d  \t%d ",registro.Tipo,
   
registro.Numero,registro.Nombre,registro.Fabrica,registro.Tamanio,
   
registro.Venta,registro.Compra);
}
//---------------------------------------------------------------------------- 
Hice algunos cambios de cosas que haces y no me gustan.
  #6 (permalink)  
Antiguo 06/03/2015, 13:27
 
Fecha de Ingreso: marzo-2015
Mensajes: 4
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Emoticones en vez de Numeros y buscar elementos

Hermano, te agradezo infinitamente, MUCHISISISISISISIMAS GRACIAS

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:39.