๐ฑ char *readline(const char *);
readline์ ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด์ ์ ์ฅํ๊ณ ๊ทธ ๋ฉ๋ชจ๋ฆฌ์ฃผ์๋ฅผ ๋ฐํํ๋ค.
๐ฑ ์ฝ๋์์ฑ
- ์ ์๋ ํจ์์ ๋ํด์ ์ ๋ชจ๋ฅด๊ฒ ์ ๋, ์ง์ ์ฝ๋๋ฅผ ์์ฑํด์ ์ฌ์ฉํด๋ณด๊ณ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ฉฐ ์ตํ๋๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด ๋ ์์๋ค.
/* readlineํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ์ํ ํค๋ */
# include <readline/readline.h>
/* add_historyํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ์ํ ํค๋ */
# include <readline/history.h>
/* printfํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ์ํ ํค๋ */
# include <stdio.h>
/* freeํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ์ํ ํค๋ */
# include <stdlib.h>
/* readlineํจ์๋ฅผ ํ์ฉํ์ฌ ๊ฐ๋จํ ํ๋ก๊ทธ๋จ ์์ฑํ๊ธฐ */
int main(void)
{
/* readlineํจ์์ ๋ฆฌํด๊ฐ์ ์ ์ฅํ๊ธฐ์ํด ์์๋ก ํฌ์ธํฐ๋ฅผ ํ๋ ์ ์ธํ๋ค */
char *str;
/* ๋ฌดํ๋ฃจํ๋ฅผ ๋๋ฆฌ๋ฉด์ readline();ํจ์๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ํธ์ถํ ๊ฒ์ด๋ค */
while(1)
{
/* readlineํจ์๊ฐ ํธ์ถ๋๋ฉด ์ธ์(prompt : )๋ฅผ ํฐ๋ฏธ๋์ ์ถ๋ ฅํ๊ณ ์ ์ฅํ ๋ผ์ธ์ ์
๋ ฅ๋ฐ๋๋ค */
str = readline("prompt : ");/* readํจ์๋ ์ ์ฅํ ๋ฌธ์์ด์ ๋ฉ๋ชจ๋ฆฌ์ฃผ์๋ฅผ ๋ฐํํ๋ค */
if (str)/* ์
๋ ฅ์ด ๋๋ค๋ฉด (์ฃผ์๊ฐ ์กด์ฌํ๋ค๋ฉด) */
printf("%s\n", str);/* ์ฃผ์์์ ๋ฌธ์์ด์ ์ถ๋ ฅํด๋ณด์ */
else/* str = NULL ์ด๋ผ๋ฉด (EOF, cntl + D)*/
break ;/* ๋ฐ๋ณต๋ฌธ์ ํ์ถํด์ค๋ค.*/
/* add_history์ ์ ์ฅ๋ ๋ฌธ์์ด์ up & down ๋ฐฉํฅํค๋ฅผ ์ด์ฉํด ํ์ธํ ์์๋ค */
add_history(str);
/* ๋ผ์ธ์ ํ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๊ธฐ๋๋ฌธ์ ๋ค ์ฌ์ฉํ ๋ฉ๋ชจ๋ฆฌ๋ ํ ๋น์ ํด์ ํด์ค์ผํ๋ค */
free(str);
}
/* ํจ์์ข
๋ฃ */
return(0);
}
๐ฑ ์คํ๊ฒฐ๊ณผ
- ์ ์์ ์ธ ์ปดํ์ผ์ ์ํด์ ์ต์ ์ readline ํด๋๋ฅผ ๋ฐ๋์ ์ถ๊ฐํด์ฃผ์! (gcc -l)
junselee /test gcc readline_test.c -lreadline # -lreadline์ ๊ผญ ์ถ๊ฐํด์ค๋ค.
junselee /test ./a.out
prompt :
# ์๋ฌด๊ฒ๋ ์
๋ ฅํ์ง์์ผ๋ฉด, ์๋ฌด๊ฒ๋ ์ถ๋ ฅํ์ง ์๋๋ค.
prompt : HI # "HI"๋ฌธ์๋ฅผ ์
๋ ฅ.
HI # "HI"๋ฌธ์๋ฅผ ์ถ๋ ฅ.
prompt : IM # "IM"๋ฌธ์๋ฅผ ์
๋ ฅ.
IM # "IM"๋ฌธ์๋ฅผ ์ถ๋ ฅ.
prompt : JUNSELEE # "JUNSELEE"๋ฌธ์๋ฅผ ์
๋ ฅ.
JUNSELEE # "JUNSELEE"๋ฌธ์๋ฅผ ์ถ๋ ฅ.
prompt : ^D% # EOD(cntl + D)๋ฅผ ์
๋ ฅ.
junselee /test # ํ๋ก๊ทธ๋จ ์ข
๋ฃ.
'๊ฐ๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[vscode] ํฐ๋ฏธ๋ ์์น๋ณ๊ฒฝ (0) | 2021.11.21 |
---|---|
[CPP] std::string ๋ฉค๋ฒํจ์ (0) | 2021.09.10 |
[Mac] ์ํ๋ ๋(Alfred) (0) | 2021.08.03 |