Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

C: Can not access the struct data in main after enter data from function

I am new to the C program, I am using a struct with array variables to contain my data set. However, after I enter one set of data to the struct and want to print the data set out on the main function it shows me something unknown word or empty.SO, how can I get access to the data in the main or in other functions from the struct? Did I do something wrong? Here is the code. Any suggestions on that? Thanks in advance!

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h> 
#include <string.h>
#include<ctype.h>


struct Team{
        char tem[40];
        char proj[40];
        char leader[40];
        char mem1[40];
        char mem2[40];
        char mem3[40];
    };



    void project_team(struct Team arr[5]){

            char str[100];
            printf("Enter>  ");
            scanf("%[^\n]s",str); //%[^\n]s can input string including space 

            sscanf( str, "%s %s %s %s %s %s",arr[0].tem,arr[0].proj,arr[0].leader,arr[0].mem1,arr[0].mem2,arr[0].mem3); //conver user input string to words and store in struct variable separately

           printf("show: %s %s %s %s %s %s \n",arr[0].tem,arr[0].proj,arr[0].leader,arr[0].mem1,arr[0].mem2,arr[0].mem3);
    }


int main(int argc, char *argv[]){


 
  struct Team arr[5];
   
    
     project_team( &arr[5] );
    printf("showthis: %s %s %s %s %s %s \n",arr[0].tem,arr[0].proj,arr[0].leader,arr[0].mem1,arr[0].mem2,arr[0].mem3);
   

return 0;
}

After I Enter:

Enter> TeamA ProjectA Amy Kelvin Fanny Jacky

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

It Display:

showthis: /usr/lib/dyld � �bx�� *

What I expect to show:

showthis: TeamA ProjectA Amy Kelvin Fanny Jacky

>Solution :

In this call

project_team( &arr[5] );

you are passing the address of memory after teh last element of the array.

You need to write

project_team( arr );

In this call of scanf

scanf("%[^\n]s",str);

remove the character 's' from the format string

scanf(" %[^\n]",str);

It would be even more safer to write

scanf(" %99[^\n]",str);

Pay attention to that the structure has 6 character arrays with 40 characters in each array. It is evident that 6 * 40 much greater than 100.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading