C语言怎么更新文件内容

Python03

C语言怎么更新文件内容,第1张

提供思路:先一组一组数据读取,然后进行比较,看是不是你要修改的数据(如果是你要修改的数据,那此时文件的指针已经指向下一组数据了),然后用fseek(fp,-sizeof(type),SEEK_CUR)使文件指针指向该数据块(fp为文件指针,sizeof(type)为数据长度,type是我指定,你可以换成你需要的数据类型,比如int或是struct等) 如果你知道数据是第几组就更好了,直接用fseek(fp,(n-1)*sizeof(type),SEEK_SET)就能找到位置了 用前面两种方法的前提是,你存入数据的时候用的都是以数据块的方式写入的同一种数据(比如只用fwrite()函数写入的struct类型数据),如果用的是复合方式写入,比如用了fwrite()、fputc()、fprintf(),这样的话,定位就有问题了。

你好!!

不知你向文件输入的是什么数据,输入数据的函数很多,有fputc(s,fp)有fwrite()函数、、、、

下面是想文件输入字符,并把字符串中的小写字符转换成大写字符:

#include<stdio.h>

#include<stdlib.h>

#include<ctype.h>

int main()

{

FILE *fp

char filename[20]

printf("请输入文件的名称:")

scanf("%s",filename)

if((fp=fopen(filename,"w"))==NULL)

{

printf("cannot open file !!!\n")

exit(0)

}

printf("请输入字符直至结束(ctrl +z):")

fflush(stdin)

char s

while(scanf("%c",&s)!=EOF)

{

if(islower(s))

s=toupper(s)//把小写字符转换成大写字符

fputc(s,fp)

}

rewind(fp)//是位置指针重新返回文件的开头,此函数没有返回值

if((fp=fopen(filename,"r"))==NULL)//以读的方式打开文件

{

printf("cannot open file !!!\n")

exit(0)

}

while(!feof(fp))

{

s=getc(fp)

putchar(s)

}

return 0

}

测试:

请输入文件的名称:hello

请输入字符直至结束(ctrl +z):hello world !

Z

Z

HELLO WORLD !

Press any key to continue

你需要解决两个问题。

1、待更改的文件应该是以“块”状形式写入的,比如fwrite((void *)student stu,sizeof(student),1L,fp),只有这样才能准确定位待更改“块”的位置。而以fprintf()写入的文件,可能由于数据的不同,每个结构数据占用的空间就不同,即使你能准确定位,但写入新数据后,若长度短了,剩余的空间可能造成混乱,若长度长了,可能造成”覆盖“。

2、打开文件同时用于”读/写“时,打开的格式是"r+"或”w+“。

另外,还需要搞清楚文件读写指针的使用特点,前两个问题解决后再讨论。