Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ferchundo9 en 23 Diciembre 2017, 23:09 pm



Título: Problema en un programa de escritura de fichero
Publicado por: ferchundo9 en 23 Diciembre 2017, 23:09 pm
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <sys/types.h>
  5. #include <sys/stat.h>
  6. #include <fcntl.h>
  7. #include <unistd.h>
  8.  
  9. #define MAX_RUTA 150
  10.  
  11. int main(int argc, char** argv) {
  12. char ruta[MAX_RUTA];
  13. int permisos;
  14. char mensaje1[]="76543210";
  15. char mensaje2[]="ABCDEFGH";
  16. int fd;
  17. if(argc==3){//Introducion de comandos por linea de comandos
  18. memcpy(ruta,argv[1],strlen(argv[1]));
  19. permisos=strtol(argv[2],NULL,8);
  20. }
  21. else{//Introducion de comandos manual
  22. printf("Introduce la ruta\n");
  23. scanf("%s",ruta);
  24. printf("Introduce los permisos\n");
  25. scanf("%o",&permisos);
  26. }
  27. fd=open(ruta,O_RDWR|O_CREAT,permisos);//Apertura o creacion del archivo
  28. if(fd<0){
  29. perror("creat");
  30. exit(EXIT_FAILURE);
  31. }
  32. if(write(fd,mensaje1,strlen(mensaje1))<0){//Escritura del mensaje1
  33. perror("write1");
  34. exit(EXIT_FAILURE);
  35. }
  36. if(write(fd,mensaje2,strlen(mensaje2))<0){//Escritura del mensaje2
  37. perror("write2");
  38. exit(EXIT_FAILURE);
  39. }
  40. if(write(fd,mensaje1,strlen(mensaje1))<0){//Escritura del mensaje1
  41. perror("write3");
  42. exit(EXIT_FAILURE);
  43. }
  44. lseek (fd,-1, SEEK_END);//Reposicionado del puntero lectura/escritura
  45. if(write(fd,mensaje2,strlen(mensaje2))<0){//Escritura del mensaje2
  46. perror("write2");
  47. exit(EXIT_FAILURE);
  48. }
  49. printf("Ruta: %s\n",ruta);
  50. printf("Permisos: %o\n",permisos);
  51. }

El problema está en que en la escritura del ultimo mensaje sobreescribe el último caracter del mensaje1 cosa que deseo evitar. Mi objetivo es la inserción entre los dos caracteres. Alguna solución?