txt->xml
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
typedef struct grades {
char id[10];
char name[10];
char course[10];
char score[10];
}grade;
int main() {
FILE *fp1, *fp2;
char FileBuff[100] = { 0 };
int i = 0;
fp1 = fopen("e:\\grades1.txt", "r");
if (fp1 == NULL) {
printf("read txt file error!");
return 0;
}
fp2 = fopen("e:\\grades1.xml", "w");
if (fp2 == NULL) {
printf("write xml file error!");
return 0;
}
grade *gra;
gra = (grade*)malloc(3 * sizeof(struct grades));
for (;i < 3;i++) {
fscanf(fp1, "%s", gra[i].id);
fscanf(fp1, "%s", gra[i].name);
fscanf(fp1, "%s", gra[i].course);
fscanf(fp1, "%s", gra[i].score);
}
for (int m = 0;m < i;m++) {
for (int n = m + 1;n < i;n++) {
if (gra[m].score < gra[n].score) {
grade temp;
temp = gra[m];
gra[m] = gra[n];
gra[n] = temp;
}
}
}
fprintf(fp2, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
fprintf(fp2, "<grades>\n");
int j = 0;
while (j < i) {
fprintf(fp2, "<grade>\n");
fprintf(fp2, "<id>%s</id>\n", gra[j].id);
fprintf(fp2, "<name>%s</name>\n", gra[j].name);
fprintf(fp2, "<course>%s</course>\n", gra[j].course);
fprintf(fp2, "<score>%s</score>\n", gra[j].score);
fprintf(fp2, "</grade>\n");
j++;
}
fprintf(fp2, "</grades>");
printf("文件输出成功");
fclose(fp1);
fclose(fp2);
return 0;
}
xml->txt
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct grades {
char id[10];
char name[10];
char course[10];
char score[10];
}grade;
int main() {
grade *gra;
FILE *fp1, *fp2;
char FileBuff[1024] = { 0 };
char *lfirst, *lend;
fp1 = fopen("E:\\grades.xml", "r");
fp2 = fopen("E:\\grades.txt", "w");
if (fp1 == NULL) {
printf("read xml file error\n");
return 0;
}
if (fp2 == NULL) {
printf("write txt file error\n");
return 0;
}
gra = (grade*)malloc(sizeof(struct grades));
int i = 0;
while (fgets(FileBuff, 100, fp1)) {
if ((lfirst = strstr(FileBuff, "<id>")) != NULL)
{
lend = strstr(lfirst + 1, "</id>");
memcpy(gra[i].id, lfirst + 4, lend - lfirst - 4);
printf("%s\n", gra[i].id);
}
if ((lfirst = strstr(FileBuff, "<name>")) != NULL)
{
lend = strstr(lfirst + 1, "</name>");
memcpy(gra[i].name, lfirst + 6, lend - lfirst - 6);
printf("%s\n", gra[i].name);
}
if ((lfirst = strstr(FileBuff, "<course>")) != NULL)
{
lend = strstr(lfirst + 1, "</course>");
memcpy(gra[i].course, lfirst + 8, lend - lfirst - 8);
printf("%s\n", gra[i].course);
}
if ((lfirst = strstr(FileBuff, "<score>")) != NULL)
{
lend = strstr(lfirst + 1, "</score>");
memcpy(gra[i].score, lfirst + 7, lend - lfirst - 7);
printf("%s\n", gra[i].score);
i++;
}
}
for (int m = 0;m < i ;m++) {
for (int n = m + 1;n < i;n++) {
if (gra[m].score < gra[n].score) {
grade temp;
temp = gra[m];
gra[m] = gra[n];
gra[n] = temp;
}
}
}
for (int j = 0;j < i;j++) {
fprintf(fp2, "学号:%s\n姓名:%s\n课程:%s\n成绩:%s\n", gra[j].id, gra[j].name, gra[j].course, gra[j].score);
printf("学号:%s\n姓名:%s\n课程:%s\n成绩:%s\n", gra[j].id, gra[j].name, gra[j].course, gra[j].score);
}
printf("文件输入成功");
free(gra);
fclose(fp1);
fclose(fp2);
return 0;
}