怎么用C语言程序删除文本文件中的记录?
2个回答
展开全部
以a+模式打开,然后修改文件的指针。。。
相关函数为
FILE *fp = fopen("c:\\*.txt","a+");
int fseek(FILE *stream , long offset ,int whence);
通过设置stream指向的FILE结构中的文件位置指示器的值实现对文件读写指针的定位。定位值是从起始点whence开始,加上以字节为单位的偏移量offset所得。正常定位返回0值,否则返回非零。
long ftell(FILE *stream);
用于读取文件读写指针的当前位置。出错时返回值为-1
int fgetpos(FILE *stream , fpos_t *pos);
将stream指向文件的当前位置(即当前ftell的返回值或文件读写指针值),保存到pos指针指向的fpos_t类型的对象中。保存成功时返回零值,否则返回非零。。。
int fsetpos(FILE *stream , const fpos_t *pos);
功能与上者相反。成功时返回零值,否则返回非零。
void rewind(FILE *stream);
将文件指针定位到文件起始位置。。
使用这几个函数基本上能实现文本文件中记录的删除了。。
可以把文本文件当成一个一维数组理解,文件指针为计数用的下标、、、、
相关函数为
FILE *fp = fopen("c:\\*.txt","a+");
int fseek(FILE *stream , long offset ,int whence);
通过设置stream指向的FILE结构中的文件位置指示器的值实现对文件读写指针的定位。定位值是从起始点whence开始,加上以字节为单位的偏移量offset所得。正常定位返回0值,否则返回非零。
long ftell(FILE *stream);
用于读取文件读写指针的当前位置。出错时返回值为-1
int fgetpos(FILE *stream , fpos_t *pos);
将stream指向文件的当前位置(即当前ftell的返回值或文件读写指针值),保存到pos指针指向的fpos_t类型的对象中。保存成功时返回零值,否则返回非零。。。
int fsetpos(FILE *stream , const fpos_t *pos);
功能与上者相反。成功时返回零值,否则返回非零。
void rewind(FILE *stream);
将文件指针定位到文件起始位置。。
使用这几个函数基本上能实现文本文件中记录的删除了。。
可以把文本文件当成一个一维数组理解,文件指针为计数用的下标、、、、
展开全部
1、打开一个tmp.txt的文件保存结果文件
FILE* out=fopen("tmp.txt","w");
FILE* in=fopen("原文件.txt","r");
循环采用fgets从in中读入字符串,fgets可以指定读入的最大字符串长度,因此可以一部分一部分地读,处理到文件结束为止
然后,因为你是要对完整的单词进行处理,所以fgets完之后再继续fgetc一个一个的字母,直到读到一个','再结束,这样就可以在内存中读到一部分的完整单词
2、关键代码:
char str[1000]; //开个1000长度的字符串数组
int len;
while (fgets(str,900,in)!=null) //读900个,留点空间后面可以读入直完整单词
{
len=strlen(str);
if (str[len-1]=='\n')
{
str[len-1]='\0'; //fgets还有个特点,碰到回车会结束,所以如果碰到回车,就会把结尾的回车也读进去,要去掉
len--;
}
while (str[len-1]!=',') //把最后的单词读完整
{
str[len]=fgetc(in);
if (str[len]==eof) break;
len++;
}
str[len]='\0';
//接下来对str中的单词进行处理啦,这里自己写,逐个地读,判断是不是要删除的那个,不是的话,就写入out文件中
}
//最后,删除原文件,把tmp.txt代替原文件
fclose(in);
fclose(out);
remove("原文件.txt");
rename("tmp.txt","原文件.txt");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询