Test Foro de elhacker.net SMF 2.1

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
#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?