๋ฐ์ํ
์ด์ ํฌ์คํ ์์ getopt๋ฅผ ์์๋ดค๊ณ , ์ด๋ฒ์ ls ๊ตฌํ ์ -a ์ต์ ์ ๋ํ ์ธ์์ฒ๋ฆฌ๋ฅผ ํด๋ณด๋ ค๊ณ ํจ
๋ค๋ฅธ ์ต์ ๋ค๋ ๋์ค์.. ์ธ์ ๊ฐ.. ํด๋ด์ผ์ง...
argc๊ฐ 1๊ฐ์ธ์ง (ls ๋ง ์ ๋ ฅ๋ ๊ฒฝ์ฐ)
argc๊ฐ 1๊ฐ๊ฐ ์๋์ง (ls์ ์ต์ ์ด ํจ๊ป ์ ๋ ฅ ๋ ๊ฒฝ์ฐ)
๋ฅผ ๋๋ ์ ์์ฑ
argc๊ฐ 1๊ฐ์ธ๊ฒฝ์ฐ .์ผ๋ก ์์ํ๋ ์จ๊นํ์ผ์ ์ ์ธํ ๋๋จธ์ง ํ์ผ๋ค์ ์ถ๋ ฅํ๊ณ
1๊ฐ๊ฐ ์๋๊ฒฝ์ฐ์๋ getopt()๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ์ ๋ง๊ฒ ์ถ๋ ฅํ๋๋ก ๊ตฌํ
ํ์ฌ ์ต์ ์ a๋ง ์ฌ์ฉ !
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <dirent.h>
int main(int argc, char* argv[]) {
struct dirent *dir;
int c;
DIR *dp = opendir(".");
if (dp == NULL) {
return -1;
}
if (argc == 1) {
while (dir = readdir(dp)) {
if (dir->d_name[0] == '.')
continue;
else
printf("%s ", dir->d_name);
}
closedir(dp);
}
else {
while( (c = getopt(argc, argv, "a")) != -1) {
switch(c) {
case 'a':
while (dir = readdir(dp)) {
printf("%s ", dir->d_name);
}
break;
case '?':
printf("Does not support %c\n", optopt);
}
closedir(dp);
}
}
printf("\n");
return 0;
}
์ปดํ์ผ ํ ์คํํ์ํค๋ฉด,
์๋์ ๊ฐ์ด
ls๋ ์ผ๋ฐ ํ์ผ๋ง,
-a์ต์ ์ ์ฃผ๋ฉด ์จ๊นํ์ผ๊น์ง ์ถ๋ ฅ๋๋ ๊ฒ์ ๋ณผ ์ ์์
mimi@mimi:~/Mimi/lang/c$ ./ls
ls.c echo.c clean clean.c TDL.c getopt.c ls
mimi@mimi:~/Mimi/lang/c$ ./ls -a
.vscode ls.c .. . echo.c clean clean.c TDL.c getopt.c ls
๋ฐ์ํ
'์ฒ์ฒํ, ๊พธ์คํ.. > C' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C : touch] C์ธ์ด๋ก touch ๊ตฌํ (0) | 2023.12.18 |
---|---|
[C : ls] ls ์ต์ ์ธ์์ฒ๋ฆฌ #getopts (0) | 2023.12.17 |
[C : ls] C์ธ์ด๋ก ls ๊ตฌํํ๊ธฐ #dirent (0) | 2023.12.16 |
[C : ctags] ctags ์ค์น #universal-ctags (0) | 2023.12.16 |
[C : echo] ํฐ๋ฏธ๋๋ก ์ ๋ ฅ๋ฐ์ ๊ฐ ์ถ๋ ฅํ๊ธฐ #argc #argv (0) | 2023.12.16 |
๋๊ธ