Nitpick: Almost all Hello World C examples are wrong. printf is for when you need to use a format string. Hello World doesn't. Besides:
> puts() writes the string s and a trailing newline to stdout.
int main() { puts("Hello World!"); }
> puts() writes the string s and a trailing newline to stdout.
int main() { puts("Hello World!"); }
return 0;https://godbolt.org/z/zcqa4Txen
But I agree, using printf for constant strings is one step away from doing printf(x) which is a big no-no.
But if you're still using raw libc in 2025 that's a problem you willingly opted into. I have zero sympathy.