文件读入|数据结构

在这里插入图片描述

#include <stdio.h>
#include <conio.h>

#define MAX 35

typedef struct
{
	long stu_no;
	char name[10];
	int score;
}rectype;

void main()
{
	void read_file(rectype R[]);
	void print_data(rectype R[]);
	void write_file(rectype R[]);
	rectype R[MAX];
	read_file(R);
	print_data(R);
	write_file(R);
}
int n=0;
void read_file(rectype R[])
{
	
	FILE *fp1;
	int i;
	fp1=fopen(".\\data.txt","r");
	printf("Please input select numbers(n<=34):");
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		fscanf(fp1,"%ld,%s,%d",&R[i].stu_no,R[i].name,&R[i].score);
	}
	fclose(fp1);
}

void print_data(rectype R[])
{
	int i;
	printf("\nSorted datas is:\n");
	printf("学号   姓名   成绩\n");
	for(i=1;i<=n;i++)
	{
		printf("%15ld%10s%5d\n",R[i].stu_no,R[i].name,R[i].score);
	}
}

void write_file(rectype R[])
{
	int i;
	FILE *fp2;
	if( (fp2=fopen(".\\new.txt","w")) == NULL)
	{
		fprintf(stderr,"文件new.txt关闭失败!\n");
		exit(1);
	}
	for(i=1;i<n;i++)
	{
		fprintf(fp2,"%ld,%s,%d\n",R[i].stu_no,R[i].name,R[i].score);
	}
	fclose(fp2);
}
#include "stdio.h"
#include "conio.h"

#define MAX  20

typedef struct
{      int  key;
       char name[9];
       int score;
} rectype;

int n;

void   INSERTSORT (rectype  R[ ])
{ int  i,j;
   for( i = 2; i <=n; i ++) 
        if (R[i].key <R[i-1].key )
         { R[0] = R[i];       
           for(j=i-1;  R[0].key< R[j].key;  j--)
                  R[j+1] = R[j];                  
             R[j+1] = R[0];     
           }
}


main()
{ rectype  R[MAX+1];
  int i;
  FILE *fp1,*fp2;

  fp1=fopen(".\\data.txt","r");
  fp2=fopen(".\\new.txt","w");
  printf("please input n(<=20):");
  scanf("%d",&n);

   for(i=1;i<=n;i++)
       fscanf(fp1,"%d %s %d",&R[i].key, R[i].name,&R[i].score);
   printf("The %d datas is :\n",n);
   for(i=1;i<=n;i++)
      printf("%5d%10s%5d\n",R[i].key, R[i].name,R[i].score);
   getch();

   INSERTSORT(R);
   printf("\nSorted datas is :\n");
   for(i=1;i<=n;i++)
      {printf("%5d%10s%5d\n",R[i].key, R[i].name,R[i].score);
       fprintf(fp2,"%5d%10s%5d\n",R[i].key, R[i].name,R[i].score);
      }
   
   fclose(fp1);
   fclose(fp2);
  getch();
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将 JSON 数据读入自定义数据结构,你可以使用第三方的 JSON 库,例如 RapidJSON 或者 JSON for Modern C++。这里以 RapidJSON 为例,假设你有以下 JSON 数据: ```json { "name": "John", "age": 30, "address": { "street": "123 Main St", "city": "Anytown", "state": "CA" }, "phoneNumbers": [ { "type": "work", "number": "555-1234" }, { "type": "home", "number": "555-5678" } ] } ``` 你可以定义一个对应的自定义数据结构来存储这些数据: ```c++ #include <string> #include <vector> struct Address { std::string street; std::string city; std::string state; }; struct PhoneNumber { std::string type; std::string number; }; struct Person { std::string name; int age; Address address; std::vector<PhoneNumber> phoneNumbers; }; ``` 然后使用 RapidJSON 的解析器来解析 JSON 数据,并将数据存储到自定义数据结构中: ```c++ #include "rapidjson/document.h" #include "rapidjson/filereadstream.h" #include <cstdio> int main() { // 从文件中读取 JSON 数据 FILE* fp = fopen("data.json", "r"); char readBuffer[65536]; rapidjson::FileReadStream is(fp, readBuffer, sizeof(readBuffer)); // 解析 JSON 数据 rapidjson::Document document; document.ParseStream(is); // 将数据存储到自定义数据结构中 Person person; person.name = document["name"].GetString(); person.age = document["age"].GetInt(); person.address.street = document["address"]["street"].GetString(); person.address.city = document["address"]["city"].GetString(); person.address.state = document["address"]["state"].GetString(); const rapidjson::Value& phoneNumbers = document["phoneNumbers"]; for (rapidjson::SizeType i = 0; i < phoneNumbers.Size(); i++) { PhoneNumber phoneNumber; phoneNumber.type = phoneNumbers[i]["type"].GetString(); phoneNumber.number = phoneNumbers[i]["number"].GetString(); person.phoneNumbers.push_back(phoneNumber); } // 打印自定义数据结构中的数据 printf("Name: %s\n", person.name.c_str()); printf("Age: %d\n", person.age); printf("Address: %s, %s, %s\n", person.address.street.c_str(), person.address.city.c_str(), person.address.state.c_str()); printf("Phone numbers:\n"); for (const auto& phoneNumber : person.phoneNumbers) { printf(" %s: %s\n", phoneNumber.type.c_str(), phoneNumber.number.c_str()); } fclose(fp); return 0; } ``` 这样就可以将 JSON 数据读入自定义数据结构中了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值