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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  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 2,136 veces)
Abril7

Desconectado Desconectado

Mensajes: 22


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

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.412


ASMático


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

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
Alfa ASUS036H deja de funcionar.
Wireless en Windows
r.ortega 0 3,647 Último mensaje 31 Enero 2011, 22:41 pm
por r.ortega
Hoy deja de funcionar el 11818
Noticias
wolfbcn 0 1,684 Último mensaje 1 Enero 2012, 18:36 pm
por wolfbcn
Teclado deja de funcionar
Hardware
alexconan 3 3,157 Último mensaje 30 Junio 2014, 19:53 pm
por Aprendiz-Oscuro
¿Por qué mi programa deja de funcionar? « 1 2 »
Programación C/C++
LML-32 10 6,203 Último mensaje 26 Mayo 2016, 07:48 am
por LML-32
El programa deja de funcionar
Programación C/C++
Naimaderis 9 3,792 Último mensaje 17 Diciembre 2016, 01:10 am
por Naimaderis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines