C에서 argv의 뜻과 리눅스 환경에서 write로 터미널에 출력해보기(feat. 숫자 오름차순도!)

박경현·2023년 6월 22일
0

42서울을 찾아보니 C언어를 터미널을 이용해 출력하는걸 과제로 그리고 시험으로 본다고
찌라시(?)가 돌아서 관련 공부를 하고 정리해보는중이다!

main함수에서 argc, char argv[] , char env[]의 의미와 활용

main함수를 적을때 그냥 vsc에서는 int main(void)로 항상 적어왔다!!
하지만 이번 리눅스에서는 main에 인자를 전달하고 받아서 활용도 가능해야하기에
int main(int argc, char*argv[]) 로 적기도 한다!!!!

int argc -> 터미널에서 적는 인자의 개수(나 자신도 포함!)
char *argv[] -> 터미널에서 적은 인자들의 주소가 이곳에 들어감!(나 자신이 제일 먼저 들어감!)
ex) argv[0] -> bb

#include<stdlib.h>
int main(int argc, char* argv[]) {
	for(int i=0; i<argc; i++) {
    	printf("%d ==> %s \n", i, argv[i]);
    }
}
gcc bb.c -o bb
./bb 20 30

// 실행결과
0 ==> bb
1 ==> 20
2 ==> 30

차고로 무조건 char*여서 문자열로 들어간다!!

write()로 터미널에 영어 오름차순 출력 과 숫자 오름차순 출력을 해보자!!

write함수란

ssize_t write(int fd, const void *buf, size_t n);
// 파일 디스크럽터 fd를 열고 buf에 있는 내용을 n만큼 규격에 맞게 출력한다!

write함수로 영어 오름차순 출력해보자

#include<unistd.h>
void print_alphabet(void) {
	char c;
    c = 'a';
    while(c<='z') {
    	write(1,&c, 1);
        c++;
    }
}

write함수로 숫자 오름차순 출력해보자 (0~9)

#include<unistd.h>
void print_number(void) {
	char n[1] = {'0'};
    while(n[0] <= '9') {
    	write(1,n,1);
        n[0]++;
    }
    
}
profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글