#include "stdlib.h"
#include "string.h"
typedef struct
{
int num
char name[10]
int grade
}student
typedef struct node
{
student date
struct node *next
}*link
link head = NULL
student creat(void)
{
student p
printf("请输入学生学号:")
setbuf(stdin,(char *)0)
scanf("%d",&p.num)
printf("请输入学生名字:")
setbuf(stdin,(char *)0)
scanf("%s",p.name)
printf("请输入学生成绩:")
setbuf(stdin,(char *)0)
scanf("%d",&p.grade)
return p
}
void insert(student date)
{
link p = (struct node*)malloc(sizeof *p)
p->date=date
p->next=head
head=p
}
void output(void)
{
link p = head
printf("|----学号-----姓名-------成绩--|\n")
while(p!=NULL)
{
printf("|%-9d%-11s%-6d|\n",p->date.num,p->date.name,p->date.grade)
p=p->next
}
printf("|------------------------------|\n")
}
void init(void)
{
puts("*************欢迎使用信息查询系统*************")
puts("*\t+-------------------------+*")
puts("*\t| 1.添加记录|*")
puts("*\t| 2.显示所有记录|*")
puts("*\t| 0.保存退出|*")
puts("*\t+-------------------------+*")
puts("********************************************")
printf("\t请输入您的选择:")
}
int main()
{
int n
char cmd[10]
do{
//system("cls")
men:init()
setbuf(stdin,(char *)0)//清空输入流
scanf("%[^\n]",cmd)//接受除换行以外的所有字符存入cmd中,并加上'\0'标志
sscanf(cmd,"%d",&n)
/*处理当命令不符合条件的情况*/
if(strlen(cmd) != 1 || n <0 || n >2 || !(*cmd >= '0' &&*cmd <= '2'))
{
printf("\t输入错误或没有这个选项!")
getchar()
getchar()
goto men
}
switch(n)
{
case 1:insert(creat())puts("\t添加成功!")break
case 2:output()break
case 0: return 0
default :break
}
printf("\tPress Enter To Continue!")
getchar()
getchar()
}while(n != 0)
return 0
}
1、可以使用fseek()来指定文件位置。函数原型:int fseek(FILE *stream, long offset, int fromwhere)
函数说明:函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置:文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset(指针偏移量)个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
返回值:如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置,函数返回一个非0值。
2、例程:向test.txt的末尾添加“this is a text"的字符串。
#include <stdio.h>
#include <string.h>
int main()
{
const char * szwrite = " this is a text"
FILE *fp = fopen("test.txt", "a+")
if (fp==0) {
printf("can't open file\n")
return 0
}
fseek(fp, 0,SEEK_END)
fwrite(szwrite, strlen(szwrite) * sizeof(char), 1, fp)
fclose(fp)
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)