Dev - C++ - Duda con ejercicio

 
Vista:
sin imagen de perfil

Duda con ejercicio

Publicado por Ángel (5 intervenciones) el 23/07/2017 19:45:49
Hola buena, tengo un problema con una parte de un programa que no se como resolver; estoy leyendo un fichero de caracteres con la función read() lo estoy guardando en un vector y luego tengo que escribir con write().
El problema esta que en el fichero que leo hay palabras repetidas y al escribirlas si esta repetida solo la tengo que escribir una vez.
El fichero seria por ejemplo asi:
------------
abc
xxx
abc
password
-------------
He sustituido con esto:

1
2
3
4
5
6
7
for(int i=0;i<numdatos1;i++){
 
if(contraseñas[i]=='\n'){
 
contraseñas[i]='\0';
 
}

el \n por \0 para usar la función strcmp() que te compara si tienes dos cadenas iguales, pero cuando las tengo iguales no se que hacer con el vector donde tengo guardado el fichero.
Código:

1
2
3
4
5
6
int numdatos1;
char contraseñas[70];
char fichero[20096];
int fd[3];
fd[0]=open("claves10.txt",O_RDONLY);
numdatos1=read(fd[0],contraseñas,70);


Entonces no se que hacer, si modificar el vector antes de escribir cuando encuentre algo repetido(no se como) o que hacer.

Necesito ideas, gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con ejercicio

Publicado por Aguml (522 intervenciones) el 25/07/2017 02:25:39
Lo primero que debes hacer es buscar palabra por palabra por si están repetidas y desechar las repeticiones. Eso podrías hacerlo por ejemplo volcando el archivo a la memoria y quitando las repeticiones. Por ejemplo si busca ABC y lo encuentra en la dirección 40bc00 pues copias desde 40bc00+strlen("ABC") hasta strlen(todo)-40bc00 a partir de 40bc00 con lo que machacas lo que había y solo queda poner el carácter de fin de cadena al final que sería el largo-strlen("ABC"). Así con todas las repeticiones para cada línea y al final tendrías un buffet sin repeticiones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar