c语言链表中插入数据问题

c语言链表中插入数据问题,第1张

#include "stdio.h"

#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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11765272.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存