Problema en un programa de escritura de fichero

Iniciado por ferchundo9, 23 Diciembre 2017, 23:09 PM

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

ferchundo9

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

#define MAX_RUTA 150

int main(int argc, char** argv) {
char ruta[MAX_RUTA];
int permisos;
char mensaje1[]="76543210";
char mensaje2[]="ABCDEFGH";
int fd;
if(argc==3){//Introducion de comandos por linea de comandos
memcpy(ruta,argv[1],strlen(argv[1]));
permisos=strtol(argv[2],NULL,8);
}
else{//Introducion de comandos manual
printf("Introduce la ruta\n");
scanf("%s",ruta);
printf("Introduce los permisos\n");
scanf("%o",&permisos);
}
fd=open(ruta,O_RDWR|O_CREAT,permisos);//Apertura o creacion del archivo
if(fd<0){
perror("creat");
exit(EXIT_FAILURE);
}
if(write(fd,mensaje1,strlen(mensaje1))<0){//Escritura del mensaje1
perror("write1");
exit(EXIT_FAILURE);
}
if(write(fd,mensaje2,strlen(mensaje2))<0){//Escritura del mensaje2
perror("write2");
exit(EXIT_FAILURE);
}
if(write(fd,mensaje1,strlen(mensaje1))<0){//Escritura del mensaje1
perror("write3");
exit(EXIT_FAILURE);
}
lseek (fd,-1, SEEK_END);//Reposicionado del puntero lectura/escritura
if(write(fd,mensaje2,strlen(mensaje2))<0){//Escritura del mensaje2
perror("write2");
exit(EXIT_FAILURE);
}
printf("Ruta: %s\n",ruta);
printf("Permisos: %o\n",permisos);
}


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?