Thread: Problem with fgets()

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Registered User
    Join Date
    Nov 2013
    Posts
    11

    Problem with fgets()

    Hi everybody!!
    I have this code:
    Code:
    #include <stdio.h>#include <string.h>
    #include <stdlib.h>
    
    
    struct lesson {
    	char name[50];
    	int grade;
    };
    
    
    struct student {
    	char name[30];
    	char surname[30];
    	int AM;
    	int year;
    	int lessons_num;
    	struct lesson *lessons;
    };
    
    
     void print_data_base(struct student Students[],int n);
    
    
    int main () {
     FILE *f;
     int n,m,i,j;
     char buff[100]="";
     struct student *Students;
    
    
    
    
        f=fopen("in.txt","r");
        if (f==NULL) {printf("error reading file!!");exit(1);}
        fscanf(f,"%d",&n);
        Students = (struct student*)malloc(n*sizeof(struct student));
    
    
        for (i=0;i<n;i++) {
            fscanf(f,"%s",Students[i].name);
            fscanf(f,"%s",Students[i].surname);
            fscanf(f,"%d",&Students[i].AM);
            fscanf(f,"%d",&Students[i].year);
    
    
            printf("%d ",Students[i].AM);
            printf("%s ",Students[i].name);
            printf("%s ",Students[i].surname);
            printf("%d ",Students[i].year);
    
    
            fscanf(f,"%d",&Students[i].lessons_num);//Πλήθος μαθημάτων
            printf("lessons_num=%d\n",Students[i].lessons_num);
            Students[i].lessons = (struct lesson*)malloc(Students[i].lessons_num * sizeof(struct lesson));
    
    
            int lessons_count;
            for(lessons_count=0; lessons_count<Students[i].lessons_num; lessons_count++){
                //fscanf(f, "%[^\n]s",Students[i].lessons[lessons_count].name);
                fgets(buff,100,f);
                printf("buff=%s\n",buff);
                strcpy(Students[i].lessons[lessons_count].name, buff);
                //fscanf(f, "%s" , Students[i].lessons[lessons_count].name);
                fscanf(f,"%d",&Students[i].lessons[lessons_count].grade);
                printf("%d. lesson: %s ",lessons_count,Students[i].lessons[lessons_count].name);
                printf("grade: %d\n",Students[i].lessons[lessons_count].grade);
            }
            getchar();
        }
        fclose(f);
        printf("print data base function...\n");getchar();
        //print_data_base(Students, n);
    
    
    return 0;
    }
    void print_data_base(struct student Students[],int n){
        int i,j;
    
    
        for (i=0;i<n;i++) {
            printf("%d ",Students[i].AM);
            printf("%s ",Students[i].name);
            printf("%s ",Students[i].surname);
            printf("%d ",Students[i].year);
            printf("\n");
            for(j=0; j<Students[i].lessons_num; j++){
                printf("%s ",Students[i].lessons[j].name);
                printf("%d\n",Students[i].lessons[j].grade);
            }
        }
        printf("\n");
    }//end print_data_base
    and the attached text file as input file.
    But something is going wrong with fgets()...
    I cannont solve this problem..
    please help!!
    Attached Files Attached Files

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. fgets problem
    By ncode in forum C Programming
    Replies: 10
    Last Post: 03-02-2012, 10:39 PM
  2. fgets() Problem
    By kihina in forum C Programming
    Replies: 3
    Last Post: 02-08-2010, 11:03 AM
  3. Fgets problem
    By lolguy in forum C Programming
    Replies: 20
    Last Post: 01-18-2009, 11:09 AM
  4. fgets problem
    By belhifet in forum C Programming
    Replies: 14
    Last Post: 11-29-2006, 05:07 PM
  5. fgets problem
    By gambitmj in forum C Programming
    Replies: 5
    Last Post: 02-26-2002, 08:55 AM

Tags for this Thread