Я пытаюсь прочитать строку из stdin с помощью библиотеки Readline GNU. У меня две основные проблемы (я думаю): одна из них - PROMPT, а другая - обработка Crtl + D (которая должна выйти из мини-скорлупы, но вместо этого seg) Как я могу обработать Ctrl + D, чтобы он мог выйти ? Это код, где я использую Readline() функции:как обрабатывать Ctrl + D с помощью GNU Readline
char* readl(char* line){
char* string="";
char* pitos="";
pitos=getenv("USER");
strcat(pitos,PROMPT);
strcat(pitos," ");
while(strcmp(string,"")==0){
//printf("%s%s ",getenv("USER"),PROMPT);
string = readline (pitos);
}
if(!string){ #trying to exit when ctrld
exit(0);
}else{
char* com = strchr(string,'#'); #ignore comments
if(com!=NULL){
*com=NULL;
}
add_history(string);
strcpy(line,string);
return string;
}
}
Вы можете изменить таблицу окружения с помощью указателя из 'pitos = getenv (« USER »);'? Даже если память на указателе доступна для записи, откуда вы знаете, есть ли место для 'concat' на ее запись? Вы должны использовать 'putenv' для изменения переменной среды. –
Почему вы изменили код? Нет необходимости аннулировать комментарии и ответы. Просто измените свой код, задайте другой вопрос, если у вас все еще есть проблемы. Лучше уходить и думать о вещах, чем пытаться заниматься учебным курсом в режиме реального времени. –
Откинутый назад. Вы должны не менять свой вопрос, если это недействительно. Не стесняйтесь ** добавлять ** дополнительную информацию, но не меняйте соответствующие части существующего текста и соответствующим образом отмечайте изменения. – Olaf