if((fp=fopen("USER.txt","r+"))==NULL)
任何时候想回到文件一开始,就用回绕函数:
rewind(fp)
这样再写就覆盖了。
"a" 打开来 是 从文件尾开始添加新内容。
#include <stdio.h>
#include <windows.h>
void gotoxy(int x, int y)
{ COORD pos = {x,y}
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE)// 获取标准输出设备句柄
SetConsoleCursorPosition(hOut, pos)//两个参数分别是指定哪个窗体,具体位置
}
int main()
{ int x,y
char s[80]
printf("hello,world!\n")
printf("hello,world!\n")
printf("hello,world!\n")
printf("What\'s your name? ")
gets(s)
gotoxy(0,2)
printf("hello,%s! \n \n",s)
return 0
}
你需要解决两个问题。1、待更改的文件应该是以“块”状形式写入的,比如fwrite((void *)student stu,sizeof(student),1L,fp),只有这样才能准确定位待更改“块”的位置。而以fprintf()写入的文件,可能由于数据的不同,每个结构数据占用的空间就不同,即使你能准确定位,但写入新数据后,若长度短了,剩余的空间可能造成混乱,若长度长了,可能造成”覆盖“。
2、打开文件同时用于”读/写“时,打开的格式是"r+"或”w+“。
另外,还需要搞清楚文件读写指针的使用特点,前两个问题解决后再讨论。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)