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
This was my text file which I have to read .
#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;
}
also this is my source code to get values from text file and put them in struct . Have done everyting that I know but can't access back what I put in struct truely . I'm newbie at here and C so someone would give a hand ?
There are 3 blocks in text source named uploader , customer and line which has id ,x1,x2,y1,y2 coordinate variables also customer has one more variable that named type .
I calculated their sizes with endlines doing ignore lines includes strings like "END" . Then allocated struct objects with their sizes before getting values from text source line by line .
So so how can I access them truely ?