test_system.txt
UPLOADER_ID X1 Y1 X2 Y2
1 1.00 1.00
END
CUSTOMER_ID TIP X1 Y1 X2 Y2
1 3 2.00 1.00 2.00 1.00
2 2 3.00 1.00 3.00 1.00
3 1 4.00 1.00 4.00 1.00
4 1 5.00 1.00 5.00 1.00
5 2 6.00 1.00 6.00 1.00
6 2 7.00 1.00 7.00 1.00
7 1 8.00 1.00 8.00 1.00
8 1 9.00 1.00 9.00 1.00
9 2 10.00 1.00 10.00 1.00
10 1 11.00 1.00 11.00 1.00
11 1 12.00 1.00 12.00 1.00
END
LINE_ID X1 Y1 X2 Y2
1 1.00 1.00 2.00 1.00
2 2.00 1.00 3.00 1.00
3 3.00 1.00 4.00 1.00
4 4.00 1.00 5.00 1.00
5 5.00 1.00 6.00 1.00
6 6.00 1.00 7.00 1.00
7 7.00 1.00 8.00 1.00
8 8.00 1.00 9.00 1.00
9 9.00 1.00 10.00 1.00
10 10.00 1.00 11.00 1.00
11 11.00 1.00 12.00 1.00
END
Это был мой текстовый файл, который я должен прочитать.
#include "stdlib.h"
#include "string.h"
#include "math.h"
typedef struct {
int size,id,tip;
float x1,x2,y1,y2;
}blocks;
int main() {
blocks *block1 , *block2 , *block3;
char line[60];
int blcNum=1, sizer=0, temp;
block1 = malloc( sizeof(blocks) );
block2 = malloc( sizeof(blocks) );
block3 = malloc( sizeof(blocks) );
FILE *fp;
fp = fopen("test_system.txt","r");
while(!feof(fp)){
fgets(line,60,fp);
if ( strstr(line,"\0") != NULL && strstr(line,"ID") == NULL && strstr(line,"END") == NULL ) {
sizer++;
printf(line);
}
else if ( strstr(line,"END") != NULL ){
if ( blcNum == 1){
block1->size = sizer,blcNum++,sizer = 0;
}
else if ( blcNum == 2){
block2->size = sizer,blcNum++,sizer = 0;
}
else if ( blcNum == 3){
block3->size = sizer,blcNum++,sizer = 0;
}
}
};
block1 = realloc(block1 , block1->size * sizeof(blocks));
block2 = realloc(block2 , block2->size * sizeof(blocks));
block3 = realloc(block3 , block3->size * sizeof(blocks));
fclose(fp);
line == NULL,blcNum = 1;
fp = fopen("test_system.txt","r");
for ( temp =0 ; temp < block1->size ; ++temp)
{
while(!feof(fp)){
fgets(line,60,fp);
if ( strstr(line,"ID") == NULL && strstr(line,"END") == NULL && strstr(line,"\0") != NULL)
{
if ( blcNum == 1){
fscanf(fp,"%d %.2f %.2f",&(block1+temp)->id,&(block1+temp)->x1,&(block1+temp)->y1);
}
else if ( blcNum == 2){
fscanf(fp,"%d %d %.2f %.2f %.2f %.2f",&(block2+temp)->id,&(block2+temp)->tip,
&(block2+temp)->x1,&(block2+temp)->y1,
&(block2+temp)->x2,&(block2+temp)->y2);
}
else if ( blcNum == 3){
fscanf(fp,"%d %.2f %.2f %.2f %.2f",&(block3+temp)->id,&(block3+temp)->x1,
&(block3+temp)->y1,&(block3+temp)->x2,
&(block3+temp)->y2);
}
}
else if ( strstr(line,"END") != NULL ){
blcNum++;
}
}
}
fclose(fp);
printf("\nUploader's information : \n");
for (temp =0; temp < block1->size ; ++temp)
{
printf(" id : %d , X1 : %.2f , Y1 : %.2f \n",(block1+temp)->id,(block1+temp)->x1,(block1+temp)->y1);
}
printf("\ncustomer's information : \n");
for (temp =0; temp < block2->size ; ++temp)
{
printf(" id : %d , tip : %d , X1 : %.2f , Y1 : %.2f , X2 : %.2f , Y2 : %.2f \n",(block2+temp)->id,(block2+temp)->tip,(block2+temp)->x1,
(block2+temp)->y1,(block2+temp)->x2,(block2+temp)->y2);
}
printf("\nLine's information : \n");
for (temp =0; temp < block3->size ; ++temp)
{
printf(" id : %d , X1 : %.2f , Y1 : %.2f , X2 : %.2f , Y2 : %.2f \n",(block2+temp)->id,(block2+temp)->x1,
(block2+temp)->y1,(block2+temp)->x2,(block2+temp)->y2);
}
printf("\n1 . block's size : %d ",block1->size);
printf("\n2 . block's size : %d ",block2->size);
printf("\n3 . block's size : %d ",block3->size);
free(block1);
free(block2);
free(block3);
return 0;
}
также это мой исходный код, чтобы получить значения из текстового файла и поместить их в структуру. Сделал все, что я знаю, но не могу получить доступ к тому, что я положил в структуру по-настоящему. Я новичок ie здесь и C, так что кто-то может помочь?
В исходном тексте есть 3 блока с именем uploader, customer и строкой с id, x1, x2, Координатные переменные y1, y2 также у покупателя есть еще одна переменная с именем type.
Я рассчитал их размеры с помощью конечных линий, игнорируя строки, включая строки типа "END". Затем выделите объекты структуры с их размерами, прежде чем получать значения из исходного текста построчно.
Так как же я могу получить к ним истинный доступ?