Autor
|
Tema: trabajo con archivos.. (Leído 2,109 veces)
|
ginny1685
Desconectado
Mensajes: 5
|
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); }
|
|
|
En línea
|
|
|
|
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;
|
|
|
En línea
|
|
|
|
Odai
Desconectado
Mensajes: 25
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
|
|
|
En línea
|
Tengo demasiadas fantasías para ser una ama de casa. Marilyn Monroe
|
|
|
s00rk
Desconectado
Mensajes: 195
|
A como veo lo que quiere es solo hacer una copia del archivo y luego contar el total de palabras encontradas en el. #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; }
|
|
|
En línea
|
|
|
|
ginny1685
Desconectado
Mensajes: 5
|
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
|
|
|
En línea
|
|
|
|
|
|