У меня есть функция, которая открывает и записывает некоторые вещи в поток stdio FILE *. Затем я вызываю другую функцию, которая создаст XML, который я хочу затем записать в тот же поток. Вместо того, чтобы передавать эту строку xml обратно в исходную функцию, потому что она может стать очень большой, могу ли я передать этот открытый поток в функцию xmlbuilder и продолжить запись в тот же поток, и где он остановился, находясь в функции xmlBuilder?
Конечно, как-то так:
void writeOtherStuff(FILE* pFile)
{
fputs("some more data\n", pFile);
}
void myFunction()
{
FILE* pFile = fopen("myfile.txt", "w");
if (!pFile)
return;
fputs("some data\n", pFile);
writeOtherStuff(pFile);
fclose(pFile);
}
Да, ты можешь. Проходя FILE *
Указатель не отличается от передачи любого другого типа указателя.