Я написал программу, которая берет файл в качестве входных данных и всякий раз, когда он находит строку длиной > 80, она добавляет\и\n к этому файлу, чтобы сделать ее шириной 80 символов.
Проблема заключается в том, что я использовал 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