#include <stdio.h>
#include <stdlib.h>
#define MAX_NAME 50
struct students
{
char name[ MAX_NAME] ;
float average;
} ;
void storeStudents( struct students * lst, int n) ;
void printStudents( struct students * lst, int n) ;
void freeStudents( struct students * lst) ;
int main( )
{
int n;
printf ( "How many students you wanna store? " ) ; struct students * list;
list
= ( struct students
* ) malloc ( n
* sizeof ( struct students
) ) ;
storeStudents( list, n) ;
printStudents( list, n) ;
freeStudents( list) ;
return 0 ;
}
void storeStudents( struct students * lst, int n)
{
int i;
for ( i= 0 ; i< n; i++ )
{
scanf ( "%s" , & ( lst
[ i
] .
name ) ) ; //In C arrays are not assignable, so why is this line working? printf ( "Average of student: " ) ; scanf ( "%f" , & ( lst
[ i
] .
average ) ) ; }
}
void printStudents( struct students * lst, int n)
{
int i;
for ( i= 0 ; i< n; i++ )
{
printf ( "Name: %s\t Average: %.2f" , lst
[ i
] .
name , lst
[ i
] .
average ) ; }
}
void freeStudents( struct students * lst)
{
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2RlZmluZSBNQVhfTkFNRSA1MAoKc3RydWN0IHN0dWRlbnRzCnsKICAgIGNoYXIgbmFtZVtNQVhfTkFNRV07CiAgICBmbG9hdCBhdmVyYWdlOwp9OwoKdm9pZCBzdG9yZVN0dWRlbnRzKHN0cnVjdCBzdHVkZW50cyAqbHN0LCBpbnQgbik7CnZvaWQgcHJpbnRTdHVkZW50cyhzdHJ1Y3Qgc3R1ZGVudHMgKmxzdCwgaW50IG4pOwp2b2lkIGZyZWVTdHVkZW50cyhzdHJ1Y3Qgc3R1ZGVudHMgKmxzdCk7CgppbnQgbWFpbigpCnsKICAgIGludCBuOwogICAgcHJpbnRmKCJIb3cgbWFueSBzdHVkZW50cyB5b3Ugd2FubmEgc3RvcmU/ICIpOwogICAgc2NhbmYoIiVkIiwgJm4pOwogICAgc3RydWN0IHN0dWRlbnRzICpsaXN0OwogICAgbGlzdCA9IChzdHJ1Y3Qgc3R1ZGVudHMgKiltYWxsb2MobipzaXplb2Yoc3RydWN0IHN0dWRlbnRzKSk7CgogICAgc3RvcmVTdHVkZW50cyhsaXN0LG4pOwogICAgcHJpbnRTdHVkZW50cyhsaXN0LG4pOwogICAgZnJlZVN0dWRlbnRzKGxpc3QpOwoKICAgIHJldHVybiAwOwp9Cgp2b2lkIHN0b3JlU3R1ZGVudHMoc3RydWN0IHN0dWRlbnRzICpsc3QsIGludCBuKQp7CiAgICBpbnQgaTsKICAgIGZvcihpPTA7aTxuO2krKykKICAgIHsKICAgICAgICBwcmludGYoIk5hbWUgb2Ygc3R1ZGVudDogIik7CiAgICAgICAgc2NhbmYoIiVzIiwgJihsc3RbaV0ubmFtZSkpOyAvL0luIEMgYXJyYXlzIGFyZSBub3QgYXNzaWduYWJsZSwgc28gd2h5IGlzIHRoaXMgbGluZSB3b3JraW5nPwogICAgICAgIHByaW50ZigiQXZlcmFnZSBvZiBzdHVkZW50OiAiKTsKICAgICAgICBzY2FuZigiJWYiLCAmKGxzdFtpXS5hdmVyYWdlKSk7CiAgICB9CiAgICBwcmludGYoIlxuIik7Cn0KCnZvaWQgcHJpbnRTdHVkZW50cyhzdHJ1Y3Qgc3R1ZGVudHMgKmxzdCwgaW50IG4pCnsKICAgIGludCBpOwogICAgZm9yKGk9MDtpPG47aSsrKQogICAgewogICAgICAgIHByaW50ZigiTmFtZTogJXNcdEF2ZXJhZ2U6ICUuMmYiLCBsc3RbaV0ubmFtZSwgbHN0W2ldLmF2ZXJhZ2UpOwogICAgICAgIHByaW50ZigiXG4iKTsKICAgIH0KfQoKdm9pZCBmcmVlU3R1ZGVudHMoc3RydWN0IHN0dWRlbnRzICpsc3QpCnsKICAgIGZyZWUobHN0KTsKfQ==
compilation info
prog.c: In function ‘storeStudents’:
prog.c:36:17: error: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[50]’ [-Werror=format=]
scanf("%s", &(lst[i].name)); //In C arrays are not assignable, so why is this line working?
^
cc1: all warnings being treated as errors
stdout