我想弄亂文件位置指示器,並寫上已經在屏幕上的東西。更改標準輸出的文件位置指示燈
#include <stdio.h>
int main()
{
fpos_t position;
fgetpos (stdout, &position);
fputs ("That is a sample",stdout);
fsetpos (stdout, &position);
fputs ("This",stdout);
return 0;
}
我想要「這是一個樣本」。我得到了類似的代碼,直接從cplusplus.com唯一的區別是他們使用一個實際的文件,而不是標準輸出。對於我不瞭解的標準輸出有一些特殊的例外情況。
我想我可以把stdout當作一個文件來處理。出於某種原因,我得到這個作爲輸出:That is a sampleThisPress any key to continue . . .
我真的想知道爲什麼。 This guy甚至提出了同樣的問題上沒有迴應cplusplus.com
我知道fseek和lseek,我可能會使用這些,而不是他們的工作,但無論我想知道爲什麼上述不起作用。如果你有更好的方式做到這一點,我願意提供建議,但我仍然想知道我在這裏做錯了什麼。先謝謝你。
真的只適用於特定類型的輸出設備/終端。我曾經寫過代碼,做了類似的事情說一個後來成爲ANSI標準的VT100終端(http://en.wikipedia.org/wiki/VT100),所以它仍然可能是一個很酷的項目,只是會嚴重依賴於系統 – PeterJ
@R eallyBadAtStuff:不要在文本模式下重寫屏幕。相反,請參閱[curses](http://linux.die.net/man/3/ncurses)(現稱爲ncurses),以獲取終端類型的獨立方式。 – wallyk
正如wallyk所說,curses是在Linux上執行它的標準方法,如果你使用的話。 – PeterJ