trabajo con archivos..

Iniciado por ginny1685, 27 Abril 2012, 03:16 AM

0 Miembros y 1 Visitante están viendo este tema.

ginny1685

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);
                     }
           


Beakman

Hola ginny1685. Por empezar tenés varios errores básicos:
swith( c ) {

Debería ser:
switch( c ) { // falta una letra C

En este código:
case "\n"
case "\0"
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.
case '\n':
    // hacer cosas
break;
case '\0':
    // hacer cosas
break;
case '\13':
    // hacer cosas
break;

Odai


#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 :)
Tengo demasiadas fantasías para ser una ama de casa.
Marilyn Monroe

s00rk

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 (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
FILE *original;
FILE *copia;
int palabras = 0, error;
char nombre[20], copianombre[40] = "copia_", linea[100], *pch;
do{
error = 0;
cout << "Nombre del archivo (sin inclui .txt): ";
cin >> nombre;
strcat(nombre, ".txt");
original = fopen(nombre, "r");
if(original == NULL)
{
error = 1;
cout << "El archivo no existe, o no se logro abrir" << endl;
}
}while(error == 1);
strcat(copianombre, nombre);
copia = fopen(copianombre, "w+");
while(fgets(linea, 100, original) != NULL)
{
fputs(linea, copia);
pch = strtok(linea, " \n");
while(pch != NULL)
{
palabras++;
pch = strtok(NULL, " \n");
}
}
fclose(original);
fclose(copia);
cout << "Total de Palabras: " << palabras;
cin.get();cin.get();
return 0;
}

ginny1685

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