私はGNU Readline Libraryを使ってstdinから行を読み込もうとしています。私は2つの大きな問題を抱えています(私は思う):1つはPROMPTで、もう1つはCrtl + D(minishellを終了すると思われますが、代わりにsegフォルト)を処理しています Ctrl + ? これは私がreadlineの()関数を使用するコードです:GNU Readlineを使ってCtrl + Dを処理する方法
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