Идея состоит в том, что в основном открывается несколько файлов и записывается в них с условием, fp передается здесь ref здесь и там, и writeresult несет ответственность за сохранение в фактическом файле. Можем ли мы знать, в каком файле он пишет?Как узнать, в каком файле на данный момент находится ссылка?
#include <stdio.h>
#include <string.h>
void Write2File(char *iMessage, FILE *fp)
{
fprintf(fp, "%s\n", iMessage);
// can i know in here where it is printing ?
}
int main(int argc, const char * argv[])
{
FILE *fp1, *fp2, *fp3, *fp4;
char message[250];
memset(message, '\0', 250);
strncpy(message, "sample text", 10);
fp1 = fopen("./output1.txt", "w+");
fp2 = fopen("./output2.txt", "w+");
fp3 = fopen("./output3.txt", "w+");
fp4 = fopen("./output4.txt", "w+");
Write2File(message, fp1);
Write2File(message, fp2);
Write2File(message, fp3);
Write2File(message, fp4);
fclose(fp1);
fclose(fp2);
fclose(fp3);
fclose(fp4);
return 0;
}
Для записи я не думаю, что существует прямая переписка между файловым потоком и файлом диска в любой операционной системе, о которой я знаю (по крайней мере, те, которые предлагают файловые потоки). Это не значит, что ответ неверен (это не так), но, читая его, кажется, подразумевает, что это «предмет Linux» :-) – Jcl
Справа. Я сказал «на Linux», потому что в примере использовал/dev, hardlinks и/proc. Я уточню. –
Кроме того, рассмотрите 'fmemopen', который определяется POSIX, где файловый дескриптор, возможно, не существует. –