Normas del foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Noviembre 18, 2008, 03:18:54
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: problema con FOPEN!! 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: problema con FOPEN!!  (Leído 221 veces)
Rexix
Colaborador
*****
Desconectado Desconectado

Mensajes: 483


xoy del rojo, ex un xentimiento no puedo parar!!


Ver Perfil Email
« en: Noviembre 15, 2006, 07:57:29 »

esto le escribi a Azrael por MP
Cita de: Rexixtente
bueno, te escribo aqui para no crear un tema para algo tan sencillo..
utilizo el dev-c++.
hago esto:
arch=fopen("A:archivo.txt","w+b");
ahi vamos excelente...

pero si quiero que el archivo quede dentro de una carpeta ahi estan mis problemas...
por ejemplo para que quede en C:WINDOWSSystem32

COMO SERIA??

salu2 Grin

y el me respondio de esta forma

Citar
Hola, mira no respondo por im estas cosas, pero me imagino que tu problema es que no estas usando los carcteres de escape correctamente, esto es en la ruta del folder solo debes indicar el caracter "" en el contexto


supongo que queria hacer esto directamente asi:

arch=fopen("C:WINDOWSSystem32","w+b");

lo cual es incorrecto, ya que la cadena resultante te quedaria asi:

arch=fopen("C:WINDOWSSystem32","w+b");


ya que es un token de printf para designar un caracter especial.

lo correcto en c es esto:

arch=fopen("C:\WINDOWS\System32\archivo.txt","w+b");

si puedes pon esto en el foro para que los newbies aprendan tambien, por favor recuerda que no doy clases privadas, aun asi te contesto porque no me gusta dejar a la gente en ceros.

saludos


pero el problema es que como me dijiste azrael no me ha funcionado y le he intentado de todas las maneras...
aqui dejo todo el code para que todos lo vean y  puedan decirme mas recomendaciones o que pueda estar pasando....
ah!!! se me olvidaba que el otro problema que tengo es que al mostrarlo me repite dos veces el ultimo de los registros!!
Cita de: Rexixtente
#include <iostream>
#include <cstdlib>
using namespace std;

struct alumno
{
  char cod[5],nom[15];
  int ed,sex;
  double n1,n2,n3,nd;
}regalum,areg[20];

int main()
{
  FILE *arch;
  int k=1;
  int n;
  //modo apetura archivo en escritura
 
  int op=0;
  do
  {
    system("cls");
    cout<<"\n\n\t 1...CREAR ARCHIVO";
    cout<<"\n\n\t 2...ADICIONAR AL ARCHIVO";
    cout<<"\n\n\t 3...MOSTRAR ARCHIVO";
    cout<<"\n\n\t 4...PASAR ARCHIVO A ARREGLO";
    cout<<"\n\n\t 5...MOSTRAR ARREGLO";
    cout<<"\n\n\t 6...PROMEDIO NOTA DEFINITIVA Y EDAD";
    cout<<"\n\n\t 7...PORCENTAJE";
    cout<<"\n\n\t 8...SALIR";
    cout<<"\n\n\n\t elija opcion deseada:\t"; cin>>op;
   
    switch(op)
    {
      case 1:
         system("cls");
         arch=fopen("A:evaluacion1.txt","w+b");
         if(arch==NULL)
         {
           system("cls");
           cout<<"\n\n\t ERROR AL CREAR ARCHIVO\n\n\t";
           system("pause");
         }
         else
         {
           cout<<"\n\n\t DIGITE EL CODIGO:\t"; cin>>regalum.cod;
           cout<<"\n\n\t DIGITE EL NOMBRE:\t"; cin>>regalum.nom;
           cout<<"\n\n\t DIGITE LA EDAD:\t"; cin>>regalum.ed;
           cout<<"\n\n\t DIGITE EL SEXO (1=hombre 2=mujer):\t"; cin>>regalum.sex;
           cout<<"\n\n\t DIGITE LA NOTA 1:\t"; cin>>regalum.n1;
           cout<<"\n\n\t DIGITE LA NOTA 2:\t"; cin>>regalum.n2;
           cout<<"\n\n\t DIGITE LA NOTA 3:\t"; cin>>regalum.n3;
           regalum.nd=(regalum.n1+regalum.n2+regalum.n3)/3;
           fwrite(&regalum,sizeof(regalum),1,arch);
           cout<<"\n\n\t registro guardado\n\n";
           system("pause");
         }
         fclose(arch);
      break;
     
      case 2:
        system("cls");
        arch=fopen("A:evaluacion1.txt","a+b");
         if(arch==NULL)
         {
           system("cls");
           cout<<"\n\n\t ERROR AL ADICIONAR ARCHIVO\n\n\t";
           system("pause");
         }
         else
         {
           cout<<"\n\n\t DIGITE EL NUEVO CODIGO:\t"; cin>>regalum.cod;
           cout<<"\n\n\t DIGITE EL NUEVO NOMBRE:\t"; cin>>regalum.nom;
           cout<<"\n\n\t DIGITE LA NUEVA EDAD:\t"; cin>>regalum.ed;
           cout<<"\n\n\t DIGITE EL NUEVO SEXO(1=hombre 2=mujer):\t"; cin>>regalum.sex;
           cout<<"\n\n\t DIGITE LA NUEVA NOTA 1:\t"; cin>>regalum.n1;
           cout<<"\n\n\t DIGITE LA NUEVA NOTA 2:\t"; cin>>regalum.n2;
           cout<<"\n\n\t DIGITE LA NUEVA NOTA 3:\t"; cin>>regalum.n3;
           regalum.nd=(regalum.n1+regalum.n2+regalum.n3)/3;
           fwrite(&regalum,sizeof(regalum),1,arch);
           cout<<"\n\n\t registro guardado\n\n";
           system("pause");
         }
         fclose(arch);   
      break;
     
      case 3:
         system("cls");
         arch=fopen("A:evaluacion1.txt","r+b");
         if(arch==NULL)
         {
           system("cls");
           cout<<"\n\n\t ERROR AL MOSTRAR ARCHIVO\n\n\t";
           system("pause");
         }
         else
         {
           while(!feof(arch))
           {
             fread(&regalum,sizeof(regalum),1,arch);               
             cout<<"\n\n\t EL CODIGO ES:\t"<<regalum.cod;                 
             cout<<"\n\n\t EL NOMBRE ES:\t"<<regalum.nom;             
             cout<<"\n\n\t LA EDAD ES:\t"<<regalum.ed;             
             cout<<"\n\n\t EL SEXO ES:\t"<<regalum.sex;             
             cout<<"\n\n\t LA NOTA 1 ES:\t"<<regalum.n1;             
             cout<<"\n\n\t LA NOTA 2 ES:\t"<<regalum.n2;             
             cout<<"\n\n\t LA NOTA 3 ES:\t"<<regalum.n3;                         
             cout<<"\n\n\t LA NOTA DEFINITIVA ES:\t"<<regalum.nd;             
             cout<<"\n................................................";
           }
           cout<<"\n\n\t";
           system("pause");
         }//fin else
         
         fclose(arch);
      break; 
     
      case 4:
        system("cls");
       
        fopen("A:evaluacion1.txt","r+b");
        if(arch==NULL)
        {
          system("cls");
          cout<<"\n\n\t ERROR AL ABRIR ARCHIVO\n\n\t";
          system("pause");
        }
        else
        {     
         while(!feof(arch))
         {
            fread(&regalum,sizeof(regalum),1,arch);             
            areg[k]=regalum;   
            n=k;
            k++;
         }
          cout<<"\n\n\t ARREGLO DE REGISTRO GUARDADO EXITOSAMENTE\n\n\t";
          system("pause");
        }
        fclose(arch);
      break;
     
      case 5:
        system("cls");
        for(k=1;k<=n;k++)
        {
             cout<<"\n\n\n EL CODIGO ES:\t"<<areg[k].cod;                 
             cout<<"\n\n\n EL NOMBRE ES:\t"<<areg[k].nom;             
             cout<<"\n\n\n LA EDAD ES:\t"<<areg[k].ed;             
             cout<<"\n\n\n EL SEXO ES:\t"<<areg[k].sex;             
             cout<<"\n\n\n LA NOTA 1 ES:\t"<<areg[k].n1;             
             cout<<"\n\n\n LA NOTA 2 ES:\t"<<areg[k].n2;             
             cout<<"\n\n\n LA NOTA 3 ES:\t"<<areg[k].n3;                         
             cout<<"\n\n\n LA NOTA DEFINITIVA ES:\t"<<areg[k].nd;             
             cout<<"\n\n\t";
             system("pause");                             
        }
        fclose(arch);
      break;
     
      case 6:
        system("cls");
        int i;
        float acumnd,acumed,promnd,promed;
        i=0; acumnd=0; acumed=0;
        arch=fopen("A:evaluacion1.txt","r+b");
        if(arch==NULL)
        {
          system("cls");
          cout<<"\n\n\t ERROR AL ABRIR ARCHIVO\n\n\t";
          system("pause");
        }
        else
        {
         
          while(!feof(arch))
          {
            fread(&regalum,sizeof(regalum),1,arch);
            acumnd=acumnd+regalum.nd;
            acumed=acumed+regalum.ed;
            i++;
          }                             
          promnd=acumnd/i; promed=acumed/i;
          cout<<"\n\n\t el promedio de la nota definitiva es:\t"<<promnd;
          cout<<"\n\n\t el promdio de la edad es:\t"<<promed<<"\n\n\t";
        }
          system("pause");
          fclose(arch);
      break;
     
      case 7:
        system("cls");
        int ch,cm;
        double porch,porcm;
        i=0; ch=0; cm=0;
        arch=fopen("A:evaluacion1.txt","r+b");
        if(arch==NULL)
        {
          system("cls");
          cout<<"\n\n\t ERROR AL ABRIR ARCHIVO\n\n\t";
          system("pause");
        }
        else
        {
          while(!feof(arch))
          {
            fread(&regalum,sizeof(regalum),1,arch);
            if(regalum.sex==1)   
            {
              ch++;
            }
            if(regalum.sex==2)
            {
              cm++;
            }
            i++;
          }
          porch=ch*100/i;
          porcm=cm*100/i; 
          cout<<"\n\n\t el porcentaje de hombre es:\t"<<porch;
          cout<<"\n\n\t el porcentaje de mujeres es:\t"<<porcm<<"\n\n\t";                                                               
        }//fin else
        system("pause");
        fclose(arch);
      break;
    }//fin switch
   
   }while(op!=8); 
  return 0;
}


SALU2 Grin
« Última modificación: Noviembre 15, 2006, 08:00:24 por Rexixtente » En línea




my page:

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion

problemas para Recordar tus contraseñas? aqui tienes la solucion

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
sowher
Habitual
*****
Desconectado Desconectado

Mensajes: 183


[ NuKE ]


Ver Perfil
« Respuesta #1 en: Noviembre 16, 2006, 10:15:47 »

ese linea esta mal .... mira bien lo q te puso Az
Código:
arch=fopen("A:evaluacion1.txt","w+b");

Primero se mas detallista en el code q yte van y depsues "criticas"
En línea
Rexix
Colaborador
*****
Desconectado Desconectado

Mensajes: 483


xoy del rojo, ex un xentimiento no puedo parar!!


Ver Perfil Email
« Respuesta #2 en: Noviembre 16, 2006, 05:06:36 »

ese linea esta mal .... mira bien lo q te puso Az
Código:
arch=fopen("A:evaluacion1.txt","w+b");

Primero se mas detallista en el code q yte van y depsues "criticas"


es que este es el code que compila y funciona a la perfeccion....

de la otra forma como explico azrael no me funciona osea asi:
arch=fopen("C:\WINDOWS\System32\archivo.txt","w+b"); 
 
en otras palabras no me funciona cuando quiero crear y abrir el archivo dentro de un directorio...

salu2 y espero ahora si me hayan comprendido Grin
En línea




my page:

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion

problemas para Recordar tus contraseñas? aqui tienes la solucion

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
arvin
Visitante
« Respuesta #3 en: Noviembre 16, 2006, 07:21:33 »

ese linea esta mal .... mira bien lo q te puso Az
Código:
arch=fopen("A:evaluacion1.txt","w+b");

Primero se mas detallista en el code q yte van y depsues "criticas"


es que este es el code que compila y funciona a la perfeccion....

de la otra forma como explico azrael no me funciona osea asi:
arch=fopen("C:\WINDOWS\System32\archivo.txt","w+b"); 
 
en otras palabras no me funciona cuando quiero crear y abrir el archivo dentro de un directorio...

salu2 y espero ahora si me hayan comprendido Grin



hombre yo te dije que asi:

arch=fopen("C:\\WINDOWS\\System32\\archivo.txt","w+b"); 
« Última modificación: Noviembre 16, 2006, 07:22:19 por AzRaEL » En línea
Rexix
Colaborador
*****
Desconectado Desconectado

Mensajes: 483


xoy del rojo, ex un xentimiento no puedo parar!!


Ver Perfil Email
« Respuesta #4 en: Noviembre 17, 2006, 07:41:52 »

bueno si tu lo dices Roll Eyes

yo copie y pegue lo que dijiste pero en fin....

lo que cuenta es que ahora me da perfectamente para crearlo dentro de una carpeta...
esto lo preguntaba porque quiero hacer una agenda de passwords... algo parecido a lo que hizo hace poco un miembro de la comunidad pero lo hizo en batch ...

ahora para acabar de completar la idea y pueda hacer perfectamente esta miniagenda necesita que me ayuden a solucionar el otro problemilla y es que al ejecutarlo me muestra el ultimo registro del archivo 2 veces...

espero puedan tomarse la minima molestia y compilarlo (dev-c++) para ver que no funciona correctamente al mostrarlo

salu2 Grin
En línea




my page:

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion

problemas para Recordar tus contraseñas? aqui tienes la solucion

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++  |  Tema: problema con FOPEN!! « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.7 | SMF © 2006-2007, Simple Machines LLC