Ho scritto un programma che prende un file come input e ogni volta che trova una linea di lunghezza> 80, si aggiunge \ e \ n a quella file per renderlo 80 caratteri in larghezza max.funzione C per inserire testo in particolare posizione nel file senza eccesso di scrivere il testo esistente
Il problema è che ho usato fseek per inserire \ e \ n quando la lunghezza supera 80, quindi sostituisce due caratteri di quella linea che supera la lunghezza 80. C'è un modo con cui posso inserire testo senza sovrascrivere le testo esistente?
Ecco il mio codice: -
#include<stdio.h>
#include<string.h>
int main(int argc, char *argv[])
{
FILE *fp1,*fp2;
int prev=0,now=0;
char ch;
int flag=0;
long cur;
fp1=fopen(argv[1],"r+");
if(fp1==NULL){
printf("Unable to open the file to read. Program will exit.");
exit(0);
}
else{
while((ch=fgetc(fp1))!=EOF){
if(ch!=' ' && ch!='\n'){
now=now+1;
}
else{
if(now>=80){
fseek(fp1,cur,SEEK_SET);
fputc('\\',fp1);
fputc('\n',fp1);
now=0;
continue;
}
if(ch=='\n'){
flag=0;
now=0;
continue;
}
else{
prev=now;
cur=ftell(fp1);
}
now=now+1;
}
}
}
fclose(fp1);
return 0;
}
Per eseguirlo, è necessario fare seguente: -
[email protected]$ cc xyz.c
[email protected]$ ./a.out file_to_check.txt
No, non c'è modo per inserire dati in t lui mezzo di un file. È necessario gestire "lo spostamento" dei dati da soli e/o scrivere in un nuovo file. – Mat
@Mat: vorrei segnalare il tuo commento come "Non un commento", poiché è una risposta :) –
possibile duplicato di [Come inserire e cancellare alcuni caratteri nel mezzo di un file?] (Http: // StackOverflow. it/questions/2431073/how-do-i-insert-and-delete-some-characters-in-the-middle-of-a-file) – Mat