c - fopen / fgets using char* instead of FILE*, why does this work? -


i noticed had used char* variable instead of file* variable in code when using fopen , fgets, code works. wondering why is? section of code follows.

... char* filepath = ac->filepath; char* line = malloc(sizeof(char) * max_char_per_line) ; filepath = fopen(filepath, "r"); // assigning result char*, not file* if (filepath == null) {     printf ("\n[%s:%d] - error opening file '%s'", __file__, __line__, filepath);     printf ("\n\n");     exit (1); }  while ((fgets(line, max_char_per_line, filepath) != null)) { ... 

both char* , file* store memory address. c has weak typing (edit: misunderstanding on part, see comments below) lets assign pointers without worrying type point to.

fopen returns address of file object , store address somewhere (in case in char*). when use address in fgets still has address of file object work expected.


Comments

Popular posts from this blog

css - Which browser returns the correct result for getBoundingClientRect of an SVG element? -

gcc - Calling fftR4() in c from assembly -

Function that returns a formatted array in VBA -