elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Deja de funcionar, agregar y mostrar archivos con delimitadores C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Deja de funcionar, agregar y mostrar archivos con delimitadores C++  (Leído 187 veces)
Abril7

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Deja de funcionar, agregar y mostrar archivos con delimitadores C++
« en: 4 Septiembre 2017, 06:08 »

Buenas noches, tengo un programa en el que capturo y muestro con delimitadores, intento usar tokens con la función strtok para separar el registro por los mismos delimitadores pero a la hora de imprimirlos solo me imprime el primer registro del archivo y luego deja de funcionar y no tengo idea por qué, ¿alguien sabe cual es mi error?
Segun yo el problema es con la función mostrar, pues los agrega bien en el archivo.

Muchas gracias de antemano.

Código:
#include <iostream>
#include <fstream>
#include <string.h>
#include <cstdlib>
using namespace std;

class User{

    public:
        void capture();
        void show();
        void deleteU();
        void searchU();
        void edit();

        char idUser[30];
        char name[30];
        char mail[40];
        char tel[20];
        char ranking[30];
        char idProfile[30];
};

int main(){
    int op;
    User x;
    int z=1;
    cout<<"|||||||||||||||||||||||||||||||||||||||||FILE EDITOR||||||||||||||||||||||||||||||||||||||||"<<endl<<endl;
    cout<<"PLEASE TYPE EVERYTHING WITH CAPITAL LETTERS, OTHERWISE YOU MAY HAVE PROBLEMS FINDING A FILE"<<endl;
    while(z!=0){
        cout<<"What do you want to do?"<<endl;
        cout<<"\t 1)Capture"<<endl;
        cout<<"\t 2)Show"<<endl;
        cout<<"\t 3)Delete"<<endl;
        cout<<"\t 4)Search"<<endl;
        cout<<"\t 5)Edit"<<endl;
        cin>>op;

            switch(op)
            {
                case 1:
                    x.capture();
                    break;
                case 2:
                    x.show();
                    break;
                case 3:
                    x.deleteU();
                    break;
                case 4:
                    x.searchU();
                    break;
                case 5:
                    x.edit();
                    break;
                default:
                    cout<<"Your option was invalid, type a valid number."<<endl;
            }
    }
    return 0;
}

void User::capture()
{
    cout<<"Give me the ID USER: ";
    cin.ignore();
    cin.get(idUser,30);
    cout<<"Give me the NAME: ";
    cin.ignore();
    cin.get(name,30);
    cout<<"Give me the MAIL: ";
    cin.ignore();
    cin.get(mail,40);
    cout<<"Give me the TELEPHONE NUMBER: ";
    cin.ignore();
    cin.get(tel,20);
    cout<<"Give me the RANKING: ";
    cin.ignore();
    cin.get(ranking,30);
    cout<<"Give me the ID PROFILE: ";
    cin.ignore();
    cin.get(idProfile,30);

    ofstream write("User.txt",ios::app);
    if (!write.good())
    {
        cout<<"\n\n\tFile not found."<<endl;
    }
    else
    {
        write<<idUser<<'|'<<name<<'|'<<mail<<'|'<<tel<<'|'<<ranking<<'|'<<idProfile<<'|'<<'\n';
    }
    write.close();
}
void User::show()
{
    ifstream read;
    read.open("User.txt");
    char line[200];
    read.getline(line,sizeof(line));
    while(!read.eof()){
        for(int i=0;i<6;i++){
            char *pointer;
            if(i==0){
                pointer = strtok(line,"|");
                strcpy(idUser,pointer);
            }
            else if(i==1){
                pointer = strtok(NULL,"|");
                strcpy(name,pointer);
            }
            else if(i==2){
                pointer = strtok(NULL,"|");
                strcpy(mail,pointer);
            }
            else if(i==3){
                pointer = strtok(NULL,"|");
                strcpy(tel,pointer);
            }
            else if(i==4){
                pointer = strtok(NULL,"|");
                strcpy(ranking,pointer);
            }
            else if(i==5){
                pointer = strtok(NULL,"|");
                strcpy(idProfile,pointer);
            }
        }
                    cout<<"ID USER: "<<idUser<<endl;
                    cout<<"NAME: "<<name<<endl;
                    cout<<"MAIL: "<<mail<<endl;
                    cout<<"TEL: "<<tel<<endl;
                    cout<<"RANKING: "<<ranking<<endl;
                    cout<<"ID PROFILE: "<<idProfile<<endl;
                    cout<<"_________________________________"<<endl<<endl;
    }
    read.close();
}

void User::deleteU()
{
}
void User::searchU()
{
}
void User::edit()
{/*
    ofstream aux;
    ifstream lectura;
    encontrado=false;
    int auxClave=0;
    char auxNombre[30];
    aux.open("auxiliar.txt",ios::out);
    lectura.open("alumnos.txt",ios::in);
    if(aux.is_open() && lectura.is_open()){
        cout<<"Ingresa la Clave del Alumno que deseas Modificar: ";
        cin>>auxClave;
        lectura>>clave;
        while(!lectura.eof()){
            lectura>>nombre>>semestre>>grupo>>edad;
            if(auxClave==clave){
                encontrado=true;
                cout<<"__________________________"<<endl;
                cout<<"Clave: "<<clave<<endl;
                cout<<"Nombre: "<<nombre<<endl;
                cout<<"Semestre: "<<semestre<<endl;
                cout<<"Grupo: "<<grupo<<endl;
                cout<<"Edad: "<<edad<<endl;
                cout<<"__________________________"<<endl;
                cout<<"Ingresa el Nuevo Nombre del alumno con Clave "<<clave<<": ";
                cin>>auxNombre;
                aux<<clave<<" "<<auxNombre<<" "<<semestre<<" "<<grupo<<" "<<edad<<endl;
                cout<<"Registro Modificado"<<endl;
            }else{
                aux<<clave<<" "<<nombre<<" "<<semestre<<" "<<grupo<<" "<<edad<<endl;
            }
            lectura>>clave;
        }
    }else{
        cout<<"No se pudoAbrir el Archivo o aun no ha sido Creado"<<endl;
    }
    if(encontrado==false){
        cout<<"No se encontro ningun registro con clave "<<auxClave<<endl;
    }
    aux.close();
    lectura.close();
    remove("alumnos.txt");
    rename("auxiliar.txt","alumnos.txt");*/
}


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.272


ASMático


Ver Perfil WWW
Re: Deja de funcionar, agregar y mostrar archivos con delimitadores C++
« Respuesta #1 en: 4 Septiembre 2017, 15:05 »

Un par de detalles.

<string.h> -> <cstring>

Luego, en show tienes:
Código
  1. for(int i=0;i<6;i++){
  2.    char *pointer;
  3.    if(i==0){
  4.        pointer = strtok(line,"|");
  5.        strcpy(idUser,pointer);
  6.    }else
Puedes quitar el for y los ifs y ponerlo todo secuencial :o

Y con respecto al problema original, trata de buscar tú mismo la línea que da el error. Si al encontrarla no lo logras solucionar, entonces pon por aquí la línea exacta.

Para encontrar la línea en la que el programa da error, puedes, por ejemplo, escribir un par de cout y endl/flush. Si ves que un cout se ejecuta y el siguiente no se ejecuta, es que la línea del medio es la que falla. En fin, es una idea, peroun código como este es difícil de depurar a ojo.

Y por cierto, ya que usas C++, podrías utilizar "string" en vez de "char[]", salvo que quieras hacerlo con char[], claro.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Avast deja de funcionar sin mas « 1 2 3 »
Seguridad
samjack 26 11,456 Último mensaje 23 Julio 2009, 19:54
por solrac666
Hoy deja de funcionar el 11818
Noticias
wolfbcn 0 680 Último mensaje 1 Enero 2012, 18:36
por wolfbcn
Teclado deja de funcionar
Hardware
alexconan 3 1,281 Último mensaje 30 Junio 2014, 19:53
por Aprendiz-Oscuro
¿Por qué mi programa deja de funcionar? « 1 2 »
Programación C/C++
LML-32 10 1,889 Último mensaje 26 Mayo 2016, 07:48
por LML-32
El programa deja de funcionar
Programación C/C++
Naimaderis 9 832 Último mensaje 17 Diciembre 2016, 01:10
por Naimaderis
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines