我已經編寫了一個程序,它將一個文件作爲輸入,並且每當找到長度大於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 2012-01-27 12:10:17
@Mat:我會將您的評論標記爲「不是評論」,因爲它是一個答案:) – 2012-01-27 12:10:58
可能的重複[如何在文件中間插入和刪除某些字符?](http:// stackoverflow。問題/ 2431073 /我怎麼做 - 我插入和刪除一些文件中的字符) – Mat 2012-01-27 12:11:10