Guten Morgen,Readline.H Geschichte Verwendung in C
Ich versuche, den letzten Befehl zu bekommen, in meinem C-Programm zu schreiben. Gerade jetzt Es ist nur ein Befehl und fügt es in die Geschichte.
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<readline/readline.h>
#include<readline/history.h>
int main(int argc, char **argv){
char *s;
char *p = getenv("USER");
char *host =getenv("HOSTNAME");
int count = 1;
char *ps;
sprintf(ps, "%d %[email protected]%s:", count, p, host);
while (s=readline(ps)){
add_history(s);
free(s);
count++;
sprintf(ps, "%d %[email protected]%s:", count, p, host);
}
return 0;
}
Ich sehe aus dem Handbuch befindet sich hier https://cnswww.cns.cwru.edu/php/chet/readline/history.html, dass ich nicht in der Lage Informationen aus der Geschichte zu erhalten, ohne Funktion mit:
HIST_ENTRY * history_get (int offset)
Hat jemand ein Beispiel für Readline- Geschichte haben? Ich habe Probleme, mich um dieses Konzept zu kümmern.
Danke
'sprintf (ps,"% d% s @% s: ", Anzahl, p, Host);' wird undefiniertes Verhalten aufrufen, da Sie dem Zeiger 'ps' keinen Platz zugewiesen haben. – FredK
Wie viel Speicher ist für 'ps' verfügbar? Haben Sie sich 'struct_hist_entry' und' struct_hist_state' (typedeffed zu 'HIST_ENTRY' und' HISTORY_STATE') angesehen? [** 2. Die Programmierung mit GNU History **] (https://cnswww.cns.cwru.edu/php/chet/readline/history.html#SEC6) scheint eine anständige Beschreibung der Benutzung der Bibliothek zu sein. –