C++ 结构和文件
我已经制作了文本文件studenti.txtC++ 结构和文件,c++,c,string,char,structure,C++,C,String,Char,Structure,我已经制作了文本文件studenti.txt 盖蒂斯·利特涅克斯1993年6月15日v Vizma Kalesnica 20.08.1991 s 卡特里娜萨伯恩6.12.1992南部 哈拉尔德·伯克夫斯基1989年2月1日v Jezups Martinovs 02.05.1990 v Vizma Zigurde 16.09.1988 s Stasija Balode 12.12.1993 s Jānis Bērziņš13.03.1992 v Zigurds Ritms 16.05.1990 v
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <windows.h>
#include <ctype.h>
#define N 16
int main()
{
FILE *fails_st;
struct date
{ int da_year;
int da_month;
int da_day;
};
struct studenti
{
int Nr;
char name[25];
char surname[25];
struct date dzd;
char dzimums[1];
} students[N];
int i, j;
system("cls");
fails_st = fopen("studenti.txt", "r");
for(i=0; i<N; i++)
{
fscanf(fails_st, "%d", &students[i].Nr);
fgets(students[i].name, sizeof students[i].name, fails_st);
fgets(students[i].surname, sizeof students[i].surname, fails_st);
fscanf(fails_st, "%d", &students[i].dzd.da_day);
fscanf(fails_st, "%d", &students[i].dzd.da_month);
fscanf(fails_st, "%d", &students[i].dzd.da_year);
fgets(students[i].dzimums, sizeof students[i].dzimums, fails_st);
}
fclose(fails_st);
system("cls");
printf("Student list\n");
for(i=0; i<N; i++)
printf("%d%s%s%d%d%d%s\n", students[i].Nr,
students[i].name, students[i].surname,
students[i].dzd.da_day,students[i].dzd.da_month,students[i].dzd.da_year,students[i].dzimums);
getch();
return 0;
}
fgets()
逐行读取开始李>
strtol
转换为数字李>
strtok
断行-将字符串拆分为以点和空格分隔的标记fgets()
读取每一行,并在所需的分隔符处使用strtok
对其进行解析
struct date
{ int da_year;
int da_month;
int da_day;
};
struct studenti
{
int Nr;
char name[25];
char surname[25];
struct date dzd;
char dzimums;
} students[N];
int main()
{
FILE *fails_st;
char line[100];
char *ptk; char * end; int i;
fails_st = fopen("studenti.txt", "r");
for(i=0; i < N && fgets(line, sizeof(line), fails_st) != NULL; i++)
{
students[i].Nr = strtol(line, &end, 10);
ptk = strtok(line, " ");
ptk = strtok(NULL, " ");
strcpy(students[i].name, ptk);
ptk = strtok(NULL, " ");
strcpy(students[i].surname, ptk);
ptk = strtok(NULL, ".");
end = (ptk + strlen(ptk));
students[i].dzd.da_day = strtol(ptk, &end, 10);
ptk = strtok(NULL, ".");
end = (ptk + strlen(ptk));
students[i].dzd.da_month = strtol(ptk, &end, 10);
ptk = strtok(NULL, " ");
end = (ptk + strlen(ptk));
students[i].dzd.da_year = strtol(ptk, &end, 10);
ptk = strtok(NULL, " ");
students[i].dzimums = *ptk;
}
fclose(fails_st);
printf("Student list\n");
for(i=0; i<N; i++)
printf("%d. %s %s %d.%d.%d %c\n", students[i].Nr, students[i].name,
students[i].surname, students[i].dzd.da_day,
students[i].dzd.da_month, students[i].dzd.da_year,
students[i].dzimums);
return 0;
}
结构日期
{国际年;
国际大牛月;
国际日;
};
结构学生
{
国际天然气公司;
字符名[25];
查氏[25];
结构日期dzd;
查尔·季姆;
}学生[N];
int main()
{
文件*失败\u st;
字符行[100];
字符*ptk;字符*end;int i;
未通过测试=fopen(“studenti.txt”、“r”);
对于(i=0;ifgets
不是这样工作的)您确定您的学生希望成为StackOverflow的特色人物吗?
struct date
{ int da_year;
int da_month;
int da_day;
};
struct studenti
{
int Nr;
char name[25];
char surname[25];
struct date dzd;
char dzimums;
} students[N];
int main()
{
FILE *fails_st;
char line[100];
char *ptk; char * end; int i;
fails_st = fopen("studenti.txt", "r");
for(i=0; i < N && fgets(line, sizeof(line), fails_st) != NULL; i++)
{
students[i].Nr = strtol(line, &end, 10);
ptk = strtok(line, " ");
ptk = strtok(NULL, " ");
strcpy(students[i].name, ptk);
ptk = strtok(NULL, " ");
strcpy(students[i].surname, ptk);
ptk = strtok(NULL, ".");
end = (ptk + strlen(ptk));
students[i].dzd.da_day = strtol(ptk, &end, 10);
ptk = strtok(NULL, ".");
end = (ptk + strlen(ptk));
students[i].dzd.da_month = strtol(ptk, &end, 10);
ptk = strtok(NULL, " ");
end = (ptk + strlen(ptk));
students[i].dzd.da_year = strtol(ptk, &end, 10);
ptk = strtok(NULL, " ");
students[i].dzimums = *ptk;
}
fclose(fails_st);
printf("Student list\n");
for(i=0; i<N; i++)
printf("%d. %s %s %d.%d.%d %c\n", students[i].Nr, students[i].name,
students[i].surname, students[i].dzd.da_day,
students[i].dzd.da_month, students[i].dzd.da_year,
students[i].dzimums);
return 0;
}