Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ginny1685 en 27 Abril 2012, 03:16 am



Título: trabajo con archivos..
Publicado por: ginny1685 en 27 Abril 2012, 03:16 am
Hola, debo hacer un codigo en el que se lean las palabras que contiene un archivo de n extensión determinada por el usuario, y luego sólo ésts se impriman en otro archivo..

eeh realizado ésto de código, pero me marca errores.. :S
como soy novata, no se si puedan darle una vista porfis :)

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

void main (){
     FILE*original, *copia;
     int countchar=0, countword=0, countline=0, i=0;
     char c, palabras[5];
     original = fopen("copia.txt", "w+");
     while ((c =fgetc (original))! = EOF){
           swith (c){
                 case "\n"
                 case"\0"
                 case"\13"
                 fputc(c, copia);
                 case " ";
                 if (countchar==5){
                 for (i=0, i<5; i++){
                     fputc(palabra, copia);
                     countword++;
                     }
                     if (c==" ") fput(c, copia);
                     }
                     countchar =0;
                     break;
                     default;
                     if (countchar<5)
                     palabra[countchar] =c;
                     countchar++;
                     }
                     }
                     fclose(original);
                     fclose(copia);
                     printf("Palabras encontradas:%d \n", countword);
                     system("pause);
                     }
           



Título: Re: trabajo con archivos..
Publicado por: Beakman en 27 Abril 2012, 04:08 am
Hola ginny1685. Por empezar tenés varios errores básicos:
Código
  1. swith( c ) {

Debería ser:
Código
  1. switch( c ) { // falta una letra C

En este código:
Código
  1. case "\n"
  2. case "\0"
  3. case "\13"

Faltan los dos puntos de cada case y seguramente querés agregarles un break porque sino pasa de largo. Además de que lleva comillas simples, porque comparás un solo carácter.
Código
  1. case '\n':
  2.     // hacer cosas
  3. break;
  4. case '\0':
  5.     // hacer cosas
  6. break;
  7. case '\13':
  8.     // hacer cosas
  9. break;


Título: Re: trabajo con archivos..
Publicado por: Odai en 27 Abril 2012, 14:21 pm

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

void main (){
     FILE*original, *copia;
     int countchar=0, countword=0, countline=0, i=0;
     char c, palabras[5];
     original = fopen("copia.txt", "w+");
     while ((c =fgetc (original))! = EOF){
           swith (c){   
                 case "\n"
                 case"\0"
                 case"\13"
                 fputc(c, copia);
                 case " ";
                 if (countchar==5){
                 for (i=0, i<5; i++){
                     fputc(palabra, copia);
                     countword++;
                     }
                     if (c==" ") fput(c,"%c" copia);
                     }
                     countchar =0;
                     break;
                     default;
                     if (countchar<5)
                     palabra[countchar] =c;
                     countchar++;
                     }
                     }
                     fclose(original);
                     fclose(copia);
                     printf("Palabras encontradas:%d \n", countword);
                     system("pause);
                     }
           
mmm no entiendo para q los casos... te falta mandar fputc el char q vas a escribir... para mi q los casos no son necesarios, ya que no realizas nada con ellos :)


Título: Re: trabajo con archivos..
Publicado por: s00rk en 28 Abril 2012, 08:46 am
A como veo lo que quiere es solo hacer una copia del archivo y luego contar el total de palabras encontradas en el.

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6. FILE *original;
  7. FILE *copia;
  8. int palabras = 0, error;
  9. char nombre[20], copianombre[40] = "copia_", linea[100], *pch;
  10. do{
  11. error = 0;
  12. cout << "Nombre del archivo (sin inclui .txt): ";
  13. cin >> nombre;
  14. strcat(nombre, ".txt");
  15. original = fopen(nombre, "r");
  16. if(original == NULL)
  17. {
  18. error = 1;
  19. cout << "El archivo no existe, o no se logro abrir" << endl;
  20. }
  21. }while(error == 1);
  22. strcat(copianombre, nombre);
  23. copia = fopen(copianombre, "w+");
  24. while(fgets(linea, 100, original) != NULL)
  25. {
  26. fputs(linea, copia);
  27. pch = strtok(linea, " \n");
  28. while(pch != NULL)
  29. {
  30. palabras++;
  31. pch = strtok(NULL, " \n");
  32. }
  33. }
  34. fclose(original);
  35. fclose(copia);
  36. cout << "Total de Palabras: " << palabras;
  37. cin.get();cin.get();
  38. return 0;
  39. }


Título: Re: trabajo con archivos..
Publicado por: ginny1685 en 28 Abril 2012, 15:50 pm
hola.. gracias por sus ayudas, y creo que no me di a entender bien ...

lo que necesito es que primero el programa le pregunte al usuario de cuantas letras deben ser ls palabras a buscar, luego que busque en un archivo todas las palabras de la extension adecuada y las imprima en otro archivo en el mismo lugar donde las encontró en el archivo original..

y como extra, el nuevo archivo que se crea debe llevar como nombre el numero de caracteres que tienen las palabras que se buscaron :S