• 大小: 5KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-15
  • 语言: C/C++
  • 标签: 算法  

资源简介

首先,逐行读取指定文件中的数据,并进行解析后保存在顺序表中。其中,文件中每行数据格式为“学号,姓名,年龄”,比如“SA10225048,[yyw1] 张三,24”。 (提示:采用顺序表结构时,顺序表中每个表元素包含三类信息:学号,姓名,和年龄;采用单链表结构时,单链表中每个结点的数据域包含三类信息:学号,姓名,和年龄。) 再,根据键盘输入进行相关操作(查找,删除和插入)。比如,若键盘输入为“P3”,则表示打印出第3项的信息(注意:采用顺序表结构时,第3项数据对应下标为2的表元素;采用单链表结构时,第3项数据对应链表中第3个结点的信息;);若键盘输入为“D3”,则表示删除第3个表元素;若键盘输入为“I3,SA10225038,张四,24”,则表示在第3项前插入一个学生的信息(SA10225038,张四,24)。

资源截图

代码片段和文件信息

// Test1.cpp: 定义控制台应用程序的入口点。

#include “string.h“
#include 
#include 

struct student
{
char id[12];
char name[10];
int age;
};

int main()
{
FILE *fw = fopen(“Lab1test.DAT“ “r“);
int len = 0;
student *list = (student*)malloc(sizeof(student)*10);
char buffer[1000];
// 从文件中读入一行数据
if (fw == NULL)
{
fprintf(stderr “Cannot open/find the file!“);
exit(EXIT_FAILURE);
}

while (!feof(fw))
{
if (fgets(buffer 1000 fw) == NULL)
break;
buffer[strlen(buffer) - 1] = ‘\0‘;

char *result = NULL*ptr;
student aStu;

ptr = buffer;
result = strtok(ptr ““);
strncpy(aStu.id result strlen(result) + 1);
ptr = NULL;
result = strtok(ptr ““);
strncpy(aStu.name result strlen(result) + 1);
ptr = NULL;
result = strtok(ptr “\0“);
aStu.age = atoi(result);
len++;
if(len%10==0)
{
realloc(list sizeof(student)*(len/10+1)*10);
}
list[len - 1] = aStu;
//printf(“%s\n“ list[len - 1].id);
}


printf(“打印全部:\n“);
for (int i = 0; i < len; i++) {
printf(“第%d项:学号%s姓名%s年龄%d\n“ i + 1 list[i].id list[i].name list[i].age);
}


printf(“数据读取完毕,请输入命令,输入q退出:\n“);
// 对顺序表操作
char command[200];
gets_s(command);
while (strcmp(command “q“)) {

评论

共有 条评论