M'étonne que tu ne savais pas que la portabilité du C était du genre à se briser en morceaux si on souffle dessus, GoldenCrystal

Ça doit faire trop longtemps que tu ne fais que du C#.
Le code de Brunni ne me choque pas, moi. Si tu fais un
machin = fopen(...) puis
if (!machin), un jour tu feras un copier/coller et tu oublieras de changer la variable dans l'une des deux lignes.
Pour ce qui est du warning, suffit de rajouter une paire de parenthèses pour que GCC se taise, ou alors de faire
if ((machin = fopen(...)) != NULL)(que je trouve plus expressif bien qu'un peu plus verbeux)
(et avant que Ximoon ne râle : ouais, si vous bossez dans l'embarqué critique, écrire ce genre de trucs n'est probablement pas accepté

)