Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/07/2011, 15:04
v1siond
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 12 años, 10 meses
Puntos: 0
problema con cadenas de caracteres

Buenas tengo un problemilla, estoy haciendo un programa que genere una factura a partir de los datos de dos archivos.

el primer archivo guarda los datos del cliente y el segundo los datos del producto.

La factura sería un tercer archivo, y mi idea para hacerla era definir variables auxiliares y asignarle las letras de las cadenas originales guardadas en los archivos -> persona y producto.

para explicarme mejor, en persona se guarda nombre, apellido, edad, direccion --> entonces mi idea era hacer una busqueda(que está lista) y asignar ese nombre, apellido, edad y direccion a otras variables llamadas nombredos, apellidodos, direcciondos, edaddos.

para luego escribirlos en el nuevo archivo factura.

el problema es que hacer eso con cadenas de caracteres no funciona como con numeros, es decir no puedo hacer nombre = nombredos.

Así que la pregunta a todo este asunto es, ¿Cómo podría igualar dos cadenas de caracteres?

Acá una muestra del código que llevo hasta ahora, notarán que sólo falta la parte de la factura, que es donde estoy atorado, no quiero que me "hagan" el programa, sino que me den consejos de qué podría hacer (en caso de que crean que igualar cadenas sea algo muy complicado).

Código C:
Ver original
  1. /*Realizar un programa que permita registrar mediante archivos, clientes y productos
  2.   y que además genere realice un proceso de venta donde haga una busqueda en dichos archivos
  3.   y genere una factura con los datos de los mismos, la factura además debe incluir el costo+iva del
  4.   producto que se vaya a vender.*/
  5.  
  6. #include <stdio.h>
  7. #include <iostream>
  8. #include <conio.h>
  9.  
  10.    void registrarpersona();
  11.    void lista();
  12.    void registrarproducto();
  13.    void factura();
  14.    void titulo();
  15.    
  16. int main()
  17. {
  18.         int opcion = 0;
  19.    
  20.         for(;;)
  21.         {
  22.             titulo();
  23.             opcion = getch();
  24.             switch (opcion)
  25.             {
  26.                    case '1': registrarpersona();
  27.                              break;
  28.                    case '2': registrarproducto();
  29.                              break;
  30.                    case '3': lista();
  31.                              break;
  32.                    case '4': factura();
  33.                              break;
  34.                    case '5': exit(0);
  35.             }
  36.         }
  37.         system ("PAUSE");
  38. }
  39.  
  40. void registrarpersona()
  41. {
  42.           int edad, acumulador =0;
  43.           char nombre[20], apellido[20], cedula[20], cedulatres[20], direccion[50];
  44.           int u=0;
  45.          
  46.           FILE *persona;
  47.           printf("\nIntroduzca un numero de cedula, para verificar si ya esta registrado\n\n");
  48.           scanf("%s", cedulatres);
  49.           if ((persona=fopen("persona.txt", "a+")) == NULL)
  50.            {
  51.                                         printf ("\nError al abrir el archivo\n");
  52.                                        
  53.            }
  54.            else
  55.            {
  56.                while(!feof(persona))
  57.                {
  58.                                     fscanf(persona,"%s %s %s %d %s",cedula ,nombre, apellido, &edad, direccion);
  59.                                     u = strcmp(cedula,cedulatres);
  60.                                     if (u==0)
  61.                                     {    
  62.                                          fclose(persona);
  63.                                          printf ("\n Esa persona ya esta registrada, seleccione alguna de las opciones de abajo si desea continuar el proceso\n\n");
  64.                                          printf ("\nO presione la opcion 5 si desea salir\n");
  65.                                          break;
  66.                                     }
  67.                }
  68.            }
  69.     if (u!=0)
  70.     {                    
  71.           printf ("\n            .::Introduzca los datos del comprador en estricto orden::.\n");
  72.           printf ("\n               .::Si desea salir del registro presione ctrl + Z::.\n");
  73.           printf ("\n              .::Al presionar crtl + Z volvera al menu de inicio::.\n");
  74.                  printf ("\ncedula ----- nombre ----- apellido ----- edad ----- direccion\n");
  75.                         scanf ("%s %s %s %d %s", cedula, nombre, apellido, &edad, direccion);
  76.                
  77.                               if ((persona=fopen("persona.txt", "a+")) == NULL)
  78.                               {
  79.                                                 printf ("\nError al abrir el archivo\n");
  80.                               }
  81.                               else
  82.                               {
  83.                                                 while (!feof(stdin))
  84.                                                 {
  85.                                                       fprintf (persona, "%s %s %s %d %s\n", cedula, nombre, apellido, edad, direccion);
  86.                                                       scanf ("%s %s %s %d %s",cedula ,nombre, apellido, &edad, direccion);
  87.                                                 }
  88.                                                 fclose(persona);
  89.                               }
  90.      }
  91. }
  92. void titulo()
  93.  {
  94.                     printf("\n                         .::Sistema de Registro y Venta de Productos::.\n");
  95.            printf ("1.-Registrar comprador\n");
  96.            printf ("2.-Registrar producto\n");
  97.            printf ("3.-Listado de producto\n");
  98.            printf ("4.-Venta\n");
  99.            printf ("5.-Salir del Programa\n");
  100.            printf ("\n\n");
  101.  }
  102.      
  103. void registrarproducto()
  104. {
  105.      char nombrep[20], codigo[20], tipo[20];
  106.      float costo=0;
  107.      FILE *producto;
  108.      
  109.       printf ("\nIntroduzca en estricto orden\n");
  110.       printf ("\nnombre de producto ----- codigo de producto ----- tipo de producto ----- costo\n");
  111.       scanf ("%s %s %s %f", codigo, nombrep, tipo, &costo);
  112.       if ((producto=fopen("producto.txt", "a+")) == NULL)
  113.       {
  114.                   printf ("\nError al abrir el archivo\n");
  115.       }
  116.       else
  117.       {
  118.           while (!feof(stdin))
  119.           {
  120.                 fprintf (producto, "%s  %s %s %f\n", codigo, nombrep, tipo, costo);
  121.                 scanf ("%s %s %s %f",codigo , nombrep, tipo, &costo);
  122.           }
  123.           fclose(producto);
  124.       }
  125. }
  126.  
  127. void lista()
  128. {
  129.      char nombrep[20], codigo[20], tipo[20];
  130.      float costo=0;
  131.      FILE *producto;
  132.      
  133.       if ((producto=fopen("producto.txt", "r+")) == NULL)
  134.       {
  135.                                         printf ("\nError al abrir el archivo\n");
  136.       }
  137.       else
  138.       {
  139.           printf ("\nLista de productos\n\n");
  140.        while (!feof(producto))
  141.           {
  142.                 printf  ("%s - %s - %s - %f", codigo, nombrep, tipo, costo);
  143.                 fscanf(producto,"%s %s %s %f", codigo, nombrep, tipo, &costo);
  144.                 printf ("\n\n");
  145.                
  146.           }
  147.                     fclose(producto);
  148.        }
  149.  
  150.          
  151.           printf ("\n\n");
  152. }    
  153.  
  154. void factura()
  155. {
  156.      int edad=0, edaddos=0;
  157.      char nombre[20],nombredos[20], apellido[20], apellidodos[20], cedula[20], cedulados[20];
  158.      char cedulatres[20], direccion[50], direcciondos[50];
  159.      int u=0;
  160.      char nombrep[20], nombrepdos[20], codigo[20], codigodos[20], tipo[20], tipodos[20];
  161.      float costo=0, costodos=0;
  162.      
  163.      FILE *producto;
  164.      FILE *persona;
  165.      FILE *factura;
  166.          
  167.           printf("\nIntroduzca un numero de cedula, para verificar si ya esta registrado\n\n");
  168.           scanf("%s", cedulatres);
  169.           if ((persona=fopen("persona.txt", "a+")) == NULL)
  170.            {
  171.                                         printf ("\nError al abrir el archivo\n");
  172.                                        
  173.            }
  174.            else
  175.            {
  176.                while(!feof(persona))
  177.                {
  178.                                     fscanf(persona,"%s %s %s %d %s",cedula ,nombre, apellido, &edad, direccion);
  179.                                     u = strcmp(cedula,cedulatres);
  180.                                     if (u==0)
  181.                                     {

Agradezco mucho su ayuda, estoy totalmente atorado xD.