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

[SOLUCIONADO] Programa se cuelga al manipular vector dentro de un ciclo

Estas en el tema de Programa se cuelga al manipular vector dentro de un ciclo en el foro de C/C++ en Foros del Web. Muy buenas a todos, espero puedan ayudarme. Realizo un programa en el cual leo un archivo linea por linea,luego extraigo datos de esta linea y ...
  #1 (permalink)  
Antiguo 03/12/2013, 15:58
 
Fecha de Ingreso: mayo-2010
Mensajes: 12
Antigüedad: 14 años
Puntos: 0
Programa se cuelga al manipular vector dentro de un ciclo

Muy buenas a todos, espero puedan ayudarme.

Realizo un programa en el cual leo un archivo linea por linea,luego extraigo datos de esta linea y almaceno dichos datos en dos vectores. El problema esta que al compilar no da errores de sintaxis pero cuando corre el programa al salir del ciclo (for o while) donde realizo el proceso anterior se cuelga y no continua con el resto del programa.

Curioso, cuando elimino o comento las lineas en las cuales almaceno la informacion en los vectores, no se queda colgado.

#include<fstream>
#include<iostream>
#include<string.h>
#include <stdlib.h>
using namespace std;

int main(void){

char *fileName = "C:\\blz.csv";
char textline[80];
char *bzl;
char *des;
int bzl1[50];
string desc[50];

ifstream inFile;
inFile.open(fileName);

if (!inFile.is_open()){
cerr << "error opening file " << fileName << endl;
}
else{
int i=0;
//Ya lo he intentado con ciclo while y for y sucede lo mismo
for (i=0;i<=100;i++){
inFile.getline(textline, 80); // leo el archivo
bzl = strtok(textline,";"); //separo la infomacion que necesito
des = strtok(NULL, ";"); //separo la informacion que necesito
desc[i] = des; // LINEA PROBLEMATICA
bzl1[i] = atoi(bzl); // LINEA PROBLEMATICA
cout << bzl1[i] << " " << desc[i] << endl; //Esta linea es para verificar el llenado de los vectores correctamente
}
cout << "hola"; //No imprime cuando las "lineas problematicas" estan activas
}
inFile.close();
return 0;
}


Muchas gracias de antemano, de verdad no entiendo como solucionarlo.
  #2 (permalink)  
Antiguo 03/12/2013, 21:42
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
<!-- google_ad_section_start -->Chekea string<!-- google_ad_section_end -->

El tipo de dato string para desc no esta siendo declarado como biblioteca debes de incluirlo
  #3 (permalink)  
Antiguo 04/12/2013, 01:47
 
Fecha de Ingreso: mayo-2010
Mensajes: 12
Antigüedad: 14 años
Puntos: 0
Respuesta: <!-- google_ad_section_start -->Chekea string<!-- google_ad_section_end --

Cita:
Iniciado por CapacProg Ver Mensaje
El tipo de dato string para desc no esta siendo declarado como biblioteca debes de incluirlo
te refieres a incluir #include<string.h>? ya lo hice pero sigue sin funcionar. Si te refieres a otra cosas, por favor me la aclararias.

Gracias
  #4 (permalink)  
Antiguo 04/12/2013, 05:05
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Programa se cuelga al manipular vector dentro de un ciclo

El problema es obvio: estas accediendo a una posición de array donde no hay nada.

Ahora vamos a ver porque pasa analizando la linea que falla:

Código C++:
Ver original
  1. for (i=0;i<=100;i++){
  2.             inFile.getline(textline, 80); // leo el archivo
  3.             bzl = strtok(textline,";"); //separo la infomacion que necesito
  4.             des = strtok(NULL, ";"); //separo la informacion que necesito
  5.             desc[i] = des; // [B]LINEA PROBLEMATICA[/B]

Si ves el bucle for, la variable "i" va desde el 0 hasta el 100 (incluido).

y cuando haces:

Código C++:
Ver original
  1. desc[i] = des; // [B]LINEA PROBLEMATICA[/B]
[/HIGHLIGHT]

Estas accediendo a las posiciones 0 hasta la 100 del array "desc", pero viendo la definición de "desc":

Código C++:
Ver original
  1. string desc[50];


Vemos que solo se puede acceder a las posiciones 0 hasta la 49.
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 04/12/2013, 05:13
 
Fecha de Ingreso: mayo-2010
Mensajes: 12
Antigüedad: 14 años
Puntos: 0
Respuesta: Programa se cuelga al manipular vector dentro de un ciclo

Muchas gracias Malenko, tenias razon y lo acababa de ver 5 seg antes de ver tu respuesta. Que tonta jeje

Muchas gracias nuevamente!

Etiquetas: cuelga, int, manipular, programa, string, vector
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 22:32.