Я написал программу, которая берет файл в качестве ввода и всякий раз, когда он находит строку длиной> 80, она добавляет \ и \ n к этому файл, чтобы сделать его 80 символов в ширину макс.Функция C для вставки текста в определенном месте в файле без перезаписи существующего текста
Проблема заключается в том, что я использовал fseek для вставки \ и \ n всякий раз, когда длина превышает 80, поэтому она переопределяет два символа этой строки, которая превышает длину 80. Есть ли способ, с помощью которого я могу вставлять текст без переопределения существующий текст?
Вот мой код: -
#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;
}
Чтобы запустить его, вам нужно сделать следующее: -
[email protected]$ cc xyz.c
[email protected]$ ./a.out file_to_check.txt
Нет, нет способ вставки данных в t он посередине файла. Вам нужно обработать «переключение» данных самостоятельно и/или записать в новый файл. – Mat
@Mat: Я бы отметил ваш комментарий как «Не комментарий», так как это ответ :) –
Возможный дубликат [Как вставлять и удалять некоторые символы в середине файла?] (Http: // stackoverflow. com/questions/2431073/how-do-i-insert-and-delete-some-characters-in-the-the-a-file) – Mat