๋ฐ์ํ
    
    
    
  ์ด์  ํฌ์คํ ์์ 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 | 
๋๊ธ