솔직히 말해서, 나는 부트캠프가 두 번째다. 자바 풀스택 웹개발 과정.
자바는 그래도 바이트 코드 언어다보니 자바 JDK만 깔면 나머지는 큰 문제가 없었는데, C 언어를 하면서 나를 괴롭힌 건 코드 그 자체가 아니었다.
“컴파일러”라는 녀석이다.
솔직히 “녀석”이라는 표현도 아까울 정도로 욕이 나오는 요인이다. 참고로 강의실에서는 x64 윈도우 환경을 쓰고, 내 개인적으로는 맥북을 쓴다. 컴파일러를 강의실에 맞추면 맥북이 못 읽고, 맥북에 맞추면 강의실에서 못 쓴다.
오늘 컴퓨터를 만지면서 욕을 많이 했는데, 코드가 아니라 컴파일러 때문이었다. 바이브 코딩을 C 언어 코드가 아닌, .vscode
폴더의 JSON 파일에다 했으니 말 다 했지.
분명 직장에서 x86_64 환경을 쓰고 맥북으로 원격 작업하는 사람이 있을 텐데, 부족한 내 검색 실력을 탓해야지.
# include <stdio.h>
# include <string.h>
# include <ctype.h>
char c;
char str[20] = "";
char *separator(char ch) {
if(ch >= '0' && ch <= '9') {
strcpy(str, "숫자");
} else if (ch >= 'a' && ch <= 'z') {
strcpy(str, "소문자");
} else if (ch >= 'A' && ch <= 'Z') {
strcpy(str, "대문자");
} else if (ispunct(ch)) {
strcpy(str, "특수문자");
}
return str;
}
int main() {
printf(">");
scanf("%c", &c);
separator(c);
printf(">%c: %s\n", c, str);
return 0;
}
strcpy
같은 함수를 쓰려면 string.h
라는 헤더를 포함하자. (이건 정보처리기사 공부 덕분에 대충은 알고 있었는데, 실제로 써 보는 건 처음이었다.)ispunct()
함수와 ctype.h
의 존재를 알게 되었다.&
와 *
의 의미를 선생님께 여쭤봐야겠다.&
은 포인터 변수의 주소값을 불러오는 역할을 하고, *
은 결과값을 불러오는 역할을 하는 것 같은데, 여전히 헷갈린다.