JA, es gibt Wege, aber sie sind historisch in der Natur und von anderen verpönt. Außerdem müssen Sie die genauen Werte recherchieren/testen und dann das Risiko eingehen, dass eine neue Version des Betriebssystems Ihre Annahmen rückgängig macht.
In diesem Fall können Sie Felder innerhalb der FILE-Struktur für bestimmte Werte testen. Die Struktur befindet sich in stdio.h und die Interessenbereiche sind: _flag und _file.
Write-up einige Charakterisierung Code und laufen auf dem System, wie:
#include <stdio.h>
main()
{
FILE *fp;
fp = fopen("test1.txt", "r");
printf("(r) _flag = %04x, _file = %04x\n", fp->_flag, fp->_file);
fp = fopen("test2.txt", "a");
printf("(a) _flag = %04x, _file = %04x\n", fp->_flag, fp->_file);
fp = fopen("test3.txt", "w");
printf("(w) _flag = %04x, _file = %04x\n", fp->_flag, fp->_file);
}
können Sie die _flag Werte sehen mit jeder Art zugeordnet offen.
Unter Windows/XP, habe ich die folgenden:
(r) _flag = 0001, _file = 0003
(a) _flag = 0002, _file = 0004
(w) _flag = 0002, _file = 0005
Hinweis, hängen Sie ist die gleiche wie Schreib! Die _file-Werte scheinen der Index in das _iob zu sein, wobei stdin _file = 0000 ist.
Wie auch immer, herumspielen, experimentieren. Versuchen Sie, Daten aus den Dateien zu schreiben/zu lesen und zu sehen, ob _flag ändert ???
Es gibt keinen Standard Weg, es zu tun, aber die meisten Plattformen werden Sie auf die eine oder andere Weise tun können. Wenn Sie nicht versuchen, vollständig plattformübergreifend zu arbeiten (oder es Ihnen nichts ausmacht, für verschiedene Plattformen einen anderen Code zu verwenden), sollten Sie Ihr Betriebssystem angeben, und Sie erhalten möglicherweise eine anständige Antwort. – zneak