我有兴趣清除由printf语句生成的C程序的输出,该语句长多行。
我最初的猜测是使用
printf("output1\n"); printf("output2\n"); rewind(stdout); printf("output3\n"); printf("output4\n");
但这产生了
output1 output2 output3 output4
我希望它会产生
output3 output4
有谁知道如何获得后者的结果?
如果您还记得同时删除了控制字符,则可以在端子和管道上获得理想的结果。这是硬编码的两行。
#include <stdio.h> int main () { fputs("output1\n",stdout); fputs("output2\n",stdout); fputs("\033[A\033[2K\033[A\033[2K",stdout); rewind(stdout); ftruncate(1,0); /* you probably want this as well */ fputs("output3\n",stdout); fputs("output4\n",stdout); return 0; }