fgets() 之后的 fputs() 到同一控制台行
fputs() to same console line after fgets()
#include <stdio.h>
int main()
{
char line[100];
fputs("Enter text: ", stdout);
fgets(line, 100, stdin);
putchar('\b'); //doesn't do anything
fputs(" <-- What a great text!", stdout);
}
代码打印:
Enter text: (whatever)
<-- What a great text!
相反,我希望:
Enter text: (whatever) <-- What a great text!
显然 '\b'
无法从 stdin
退格 '\n'
,即使它是最后一个字符。
有什么想法吗? C++ 会很好,像 ncurses
这样的库就不行。仅供参考:A similar SO question 处理 stdout
仅无用户输入。
如果可以利用console codes:
#include <stdio.h>
#include <string.h>
int main(void)
{
char line[100];
size_t size;
size = (size_t)printf("Enter text: ");
fgets(line, 100, stdin);
printf("3[A3[%zuC", size + strlen(line));
fputs(" <-- What a great text!", stdout);
return 0;
}
将光标向前移动N 列(取决于您打印的内容),然后将光标向上移动1 行。例如:我将光标向右移动 30 列,然后向上移动 1 行。这应该有效。
#include <stdio.h>
int main()
{
char line[100];
fputs("Enter text: ", stdout);
fgets(line, 100, stdin);
printf(" 3[30C");
printf("3[1A");
fputs(" <-- What a great text!", stdout);
}
代码打印:
Enter text: (whatever) <-- What a great text!
#include <stdio.h>
int main()
{
char line[100];
fputs("Enter text: ", stdout);
fgets(line, 100, stdin);
putchar('\b'); //doesn't do anything
fputs(" <-- What a great text!", stdout);
}
代码打印:
Enter text: (whatever)
<-- What a great text!
相反,我希望:
Enter text: (whatever) <-- What a great text!
显然 '\b'
无法从 stdin
退格 '\n'
,即使它是最后一个字符。
有什么想法吗? C++ 会很好,像 ncurses
这样的库就不行。仅供参考:A similar SO question 处理 stdout
仅无用户输入。
如果可以利用console codes:
#include <stdio.h>
#include <string.h>
int main(void)
{
char line[100];
size_t size;
size = (size_t)printf("Enter text: ");
fgets(line, 100, stdin);
printf("3[A3[%zuC", size + strlen(line));
fputs(" <-- What a great text!", stdout);
return 0;
}
将光标向前移动N 列(取决于您打印的内容),然后将光标向上移动1 行。例如:我将光标向右移动 30 列,然后向上移动 1 行。这应该有效。
#include <stdio.h>
int main()
{
char line[100];
fputs("Enter text: ", stdout);
fgets(line, 100, stdin);
printf(" 3[30C");
printf("3[1A");
fputs(" <-- What a great text!", stdout);
}
代码打印:
Enter text: (whatever) <-- What a great text!