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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Como leer de teclado 4 cosas en: 21 Enero 2016, 17:25 pm
Buenas tardes, esty haciendo una función en la cual se pide que escriba hasta 4 cosas, las 2 primeras caracteres, y las dos últimas números, la cosa es que no es necesario, que estén las posteriores, es decir, si esta la 4, tienen que estar la 1, 2 y 3, y si está la 2 tiene que estar la 1.
Mi problema es que no se como se haría de tal modo que no me de problemas si escribo solo la 1, o si escribo solo la 1 y la 2.
Mi idea era algo tan simple como esto, pero aquí si no escribes 4 cosas no funciona, también lo había planteado con getlines, pero ahí al final del ultimo elemento que escribía por teclado me añadía números si lo presentaba. Gracias
Código:
int main (){
        const int MAX = 100;
char i[MAX];
char d[MAX];
int g,h;
cout << "Escriba:" << flush;
cin >> i >> d >> g >> h;
        cout << i << d << g << h << endl;
}
2  Programación / Programación C/C++ / Re: No me abre el archivo en: 21 Enero 2016, 00:39 am
Haz que el programa te escriba toda la cadena aux justo después de strcat(aux,NombreFicher); así sabrás que se ha intentado abrir. También puedes hacer que te escriba el valor devuelto por z.is_open() para ver si lo ha abierto.
Si si si intentarlo lo intenta, pero jamás me lo abre y eso es lo que no entiendo.
3  Programación / Programación C/C++ / No me abre el archivo en: 20 Enero 2016, 20:49 pm
Hola buenas tengo que hcaer un programa que lea el nombre de un fichero, para poder trabajar con él, mi problema es que jamás me abre ese archivo ponga lo que ponga, el directorio es correcto, asi que era por si alguno sabíais o veíais que fallaba gracias.
Código:
int main(){
bool si=true;
const int MAX = 19;
const int MAXI = 120;
const char hola[MAXI] = "../../datos/subtitulos/";
char aux[MAXI];
while(si){
char NombreFichero[MAXI];
cout << "Un fichero de subtitulos(de practicasPROG1/datos/subtitulos): " << flush;
cin >> NombreFichero;
strcpy(aux,hola);
strcat(aux,NombreFichero);
ifstream z;
z.open(aux);
if(z.is_open()){
cout << "El fichero " << NombreFichero << "ha sido leido y contiene "
<< contarSubtitulos(NombreFichero) << "subtitulos que han sido leidos" << endl;
ordenes();
char d[MAX];
char f[MAX];
int e;
int g;
cout << "orden?";
cin >> d >> f >> e >> g;
convertir(d);
convertir(f);
operaciones(d, f, e, g, NombreFichero);
if(strcmp(d,"fin")==0){
si=false;
}
else if (strcmp(d,"fichero")==0){
NombreFichero[MAX]=d[MAX];
strcat(aux,NombreFichero);
ifstream z;
z.open(hola);
}
}
else{
cout << "El fichero " << NombreFichero << " no ha podido ser leido"
<< endl;
}
}
}
4  Programación / Programación C/C++ / Re: Como abrir un directorio en: 20 Enero 2016, 20:46 pm
Crea, mediante array de strings o en un fichero de configuración, las rutas donde tu programa tendrá que mirar si hay el .srt que busca el usuario; y después que vaya probando ruta por ruta si el archivo existe y cargue la primera aparición o le diga al usuario que no existe.

Yo lo he hecho con arrays:
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main()
  5. {
  6.    FILE *fp;
  7.    char cadena[80];
  8.    char directorio[2][80];
  9.    char archivo[80];
  10.    char ruta[165];
  11.    char const extension[] = ".txt";
  12.    int i;
  13.    int encontrado;
  14.    int caracteres;
  15.  
  16.    strcpy(directorio[0], "./prueba/");
  17.    strcpy(directorio[1], "./prueba2/");
  18.  
  19.    printf("Nombre el archivo a buscar: ");
  20.    scanf("%79s", archivo);
  21.    puts("\n");
  22.  
  23.    for(i = 0, encontrado = 0; i < 2 && !encontrado; ++i) {
  24.        ruta[0] = '\0';
  25.        strcat(ruta, directorio[i]);
  26.        strcat(ruta, archivo);
  27.        strcat(ruta, extension);
  28.        fp = fopen(ruta, "r");
  29.        if(fp)
  30.            encontrado = 1;
  31.    }
  32.  
  33.    if(encontrado) {
  34.        caracteres = printf(" Contenido de %s\n", archivo);
  35.        for(i = 0; i < caracteres; ++i)
  36.            printf("-");
  37.        puts("");
  38.        while(!feof(fp)) {
  39.            fscanf(fp, "%s", cadena);
  40.            puts(cadena);
  41.            cadena[0] = '\0';
  42.        }
  43.    }
  44.    else {
  45.        printf("El archivo %s no ha sido encontrado\n", archivo);
  46.    }
  47.    return(0);
  48. }

Así suponiendo que hay un archivo llamado prueba.txt en el directorio prueba, con texto en su interior 'prueba'; y un archivo llamado prueba2.txt en el directorio prueba2, con texto en su interior 'prueba2':

Nombre el archivo a buscar: prueba


 Contenido de prueba
---------------------
prueba




Nombre el archivo a buscar: prueba2


 Contenido de prueba2
----------------------
prueba2




Nombre el archivo a buscar: prueba3


El archivo prueba3 no ha sido encontrado


Muchas gracias!!! :)
5  Programación / Programación C/C++ / Como abrir un directorio en: 20 Enero 2016, 16:55 pm
Hola buenas estoy realizando un programa que me han pedido en el cual tengo que leer de teclado el nombre de un archivo .srt, y abrir su directorio, cabe decir que todos los .srt, están en /datos/subtitulos/---.srt. Mi duda es como hacer para que esto vaya variando y como incluir el directorio, os incluyo mi función main, donde se tendría que abrir susodicho .srt:


int main(){
   bool si=true;
   const int MAX = 19;
   while(si){
      char NombreFichero[MAX];
      cout << "Un fichero de subtitulos"
      "(de practicasPROG1/datos/subtitulos): " << flush;
      cin >> NombreFichero;
      ifstream z;
      z.open(NombreFichero);
      if(contarSubtitulos(NombreFichero)>0){
         cout << "El fichero " << NombreFichero
               << " ha sido leido y contiene "
               << contarSubtitulos(NombreFichero)
               << " subtitulos que han sido leidos" << endl;
         ordenes();
         char d[10];
         char f[MAX];
         int e;
         int g;
         cout << "orden?";
         cin >> d >> f >> e >> g;
         convertir(d);
         convertir(f);
         operaciones(d, f, e, g, NombreFichero);
         if(strcmp(d,"fin")==0){
         si=false;
         }
         else if (strcmp(d,"fichero")==0){
            NombreFichero[MAX]=d[MAX];
            z.open(NombreFichero);
         }
      }
      else{
         cout << "El fichero " << NombreFichero << " no ha podido ser leido"
               << endl;
      }
   }
}
     
6  Programación / Programación C/C++ / Duda sobre error en: 17 Enero 2016, 17:24 pm
Hola buenas al escribir una función de leer un fichero con datos tipo subtítulo me da un error en los getline(), y pone

error: no matching function for call to 'std::basic_ifstream<char>::getline(char [80])'
     f.getline(texto);
Os dejo el programa:

void leerSubtitulos (const char nombreFichero[], Subtitulo S[]){
   const int MAX_LONG_LINEA = 80;  
   const int MAX_LINEAS = 3;
   ifstream f;
   f.open(nombreFichero);
   if(f.is_open()){
      for(int i = 0; i<contarSubtitulos(nombreFichero); i++){
         int hour,min,segs,mil_segs,numero,nLineas=0;
         char aux;
         Tiempo inicio,fin;
         f >> numero >> hour >> aux >> min >> aux >> segs >> aux >> mil_segs;
         inicio = definir(hour*3600+min*60+segs,mil_segs);
         aux = f.get(); aux = f.get(); aux = f.get(); aux = f.get();; aux = f.get();
         f >> hour >> aux >> min >> aux >> segs >> aux >> mil_segs;
         fin = definir(hour*3600+min*60+segs,mil_segs);
         f.getline();
         char texto[MAX_LINEAS][MAX_LONG_LINEA];
         for(int i = 0; i<MAX_LINEAS; i++){
            f.getline(texto);
            nLineas++;
         }
         S = definir(numero, nLineas, texto, inicio, fin);
      }
   }
   else{
      cerr << "No se ha podido abrir" << endl;
   }
}


7  Programación / Programación C/C++ / Ayuda con dato tipo subtitulo, ¿cómo sería la función definir? gracias en: 5 Enero 2016, 18:25 pm
// Número máximo de líneas del texto de un subtítulo
const int MAX_LINEAS = 3;
// Número máximo de caracteres por línea en un subtítulo         
const int MAX_LONG_LINEA = 80;   

/*
 * Un dato de tipo Subtitulo permite representar un subtítulo con su
 * información asociada (número del subtítulo, su texto, y el tiempo
 * inicial y final de su proyección)
 */
struct Subtitulo {
   int numero;                // número del subtítulo
   int numLineasTexto;        // su número de líneas
   char texto[MAX_LINEAS][MAX_LONG_LINEA];    // cada una de sus líneas
   Tiempo inicio, fin;        // tiempo del inicio y fin de su proyección
};
/*
 * Pre: num >= 1, nLineas >= 0
 * Post: Devuelve un subtítulo cuyo número es num, cuenta con un texto
 *       con nLineas líneas, iguales a las almacenadas en texto[0,nLineas-1],
 *       el instante del comienzo de su proyección es igual a t_inicio
 *       y el instante del final de su proyección es igual a t_fin
 */
Subtitulo definir (int num, int nLineas, char texto[][MAX_LONG_LINEA], 
                   Tiempo t_inicio, Tiempo t_fin);
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines