2016-03-22 8 views
-1
#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); 
} 

Der Code druckt:fputs() auf dieselbe Konsole Linie nach fgets()

Enter text: (whatever) 
    <-- What a great text! 

Stattdessen hatte ich gehofft:

Enter text: (whatever) <-- What a great text! 

So scheinbar '\b' nicht die RÜCK kann '\n' von stdin, auch wenn es das letzte Zeichen ist.

Irgendwelche Ideen vielleicht? C++ wäre in Ordnung, Bibliotheken wie ncurses nicht. FYI: A similar SO question Umgang mit stdout keine Benutzereingabe nur.

+0

wie ein Rückschritt auf kann 'stdout' die' stdin' beeinflussen? –

+0

Sie haben keine ** Zeile ** ausgegeben. Sie müssen Code wie ** puts (line); ** hinzufügen. –

+0

Sie haben Ihr eigenes Duplikat aufgelistet. Die dort angegebene Antwort gilt. ** Sie können nicht. ** – SergeyA

Antwort

2

Wenn Sie von console codes machen können:

#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("\033[A\033[%zuC", size + strlen(line)); 
    fputs(" <-- What a great text!", stdout); 
    return 0; 
} 
+0

Sieht vielversprechend aus; funktioniert unter Windows nicht, aber vielleicht kann ich das herausfinden –

+0

Nein, es funktioniert nicht unter Windows, ist Putty eine Option? –

0

Bewegen Sie den Cursor nach vorn von N Spalten (je nachdem, was Sie drucken) und dann den Cursor um 1 Zeile nach oben verschoben. Zum Beispiel: Ich bewege den Cursor um 30 Spalten nach rechts und dann um eine Zeile nach oben. Das sollte funktionieren.

#include <stdio.h> 
int main() 
{ 
    char line[100]; 

    fputs("Enter text: ", stdout); 
    fgets(line, 100, stdin); 
    printf(" \033[30C"); 
    printf("\033[1A"); 
    fputs(" <-- What a great text!", stdout); 
} 

Der Code druckt:

Enter text: (whatever)   <-- What a great text!