C语言怎么创建utf-8的txt文件

问题遇到的现象和发生背景

使用C语言在linux创建了txt文件。但是前端读取数据时中文乱码,修改txt格式为utf-8后,解决了,但是这个TXT文件是C语言自己创建的,前端操作时要多次删除txt文件,然后创建,可不可以直接在创建的时候指定utf-8编码。

问题相关代码,请勿粘贴截图

sscanf(Data,"Display=%[^&]&host=%[^&]&HostIP=%[^&]&remarks=%s",szTmpa, szTmpa1,szTmpa2, szTmpa3);
        FILE *fp = NULL;
        fp = fopen("111.txt","a+");
        fprintf(fp,"%s",szTmpa);

        fprintf(fp,"%s","|");

        fprintf(fp,"%s",szTmpa1);

        fprintf(fp,"%s","|");

        fprintf(fp,"%s",szTmpa2);

        fprintf(fp,"%s","|");

        fprintf(fp,"%s",szTmpa3);

        fprintf(fp,"\r\n");
        fflush(fp);
        fclose(fp);
        printf("%s%s%s%s",szTmpa,szTmpa1,szTmpa2,szTmpa3);
运行结果及报错内容
我的解答思路和尝试过的方法

应为要添加数据修改数据,所以txt文件会经常打开关闭,所以只能在创建的时候指定格式

我想要达到的结果

编码和文件句柄没关系,只和字符串写入文件时如何编码有关系。
参考
setlocale
iconv