안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "cmd창에서 파일 한꺼번에 옮기는 방법"입니다. vscode가 편해서 자바 코딩할 때도 vscode를 주로 써왔는데, eclipse에서 패키지를 관리하는 방식으로 vscode 파일을 재배치해서 사용해보려고 합니다. 문제는 eclipse처럼. java 파일과. class 파일이 나누어져 있지 않고 하나의 파일로 혼재되어 있습니다. 그래서 이중 src 파일과 bin 파일을 구분해서. java 파일반 src 파일로 이동을 하려고 cmd 명령어를 찾아보았습니다. cmd에서 파일을 이동시키는 명령어는 move입니다. move 옮기려는 파일 위치 옮길 파일 위치 를 차례대로 써주면 됩니다. 저 같은 경우는 현재 폴더(./) 안의 확장자가 java인 모든 파일 (..
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "c++ 생성자 호출 시점"입니다. #include #include using namespace std; struct Score { char name[20]; int score; // Score(){} Score(int score, const char *name){ this->score = score; strcpy(this->name, name); cout
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "[c++] string.begin()의 포인터와 string name의 포인터는 다르다."입니다. #include #include #include using namespace std; main() { string name = "abc"; printf("%d\n", name); printf("%d", name.begin()); } c++에서는 string 객체를 제공합니다. 따라서 c에서 존재하는 문자열을 다루는 어려움이 많이 해소됩니다. string객체의 메서드 중에는 begin() 메서드가 존재하는데, 객체에 저장된 문자열의 첫 번째 위치(포인터)를 리턴해줍니다. 위 예를 보면 name string 객체에 문자열 abc를 저장 후, begin()을 ..
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "Default argument value redeue redeclared for parameter 에러" 입니다. c++ 에는 함수 오버로딩이 가능합니다. 쉽게 말하면 같은 이름을 가진 함수를 정의 할수 있습니다. 단, 함수의 매개변수의 타입이나 개수는 달라야 합니다. 리턴값은 상관 없습니다. c에서는 함수의 이름이 같으면 매개변수가 달라도 에러가 발생합니다. c++에서 같은 코드를 정의하면 에러없이 잘 적용 되는 것을 볼 수 있습니다. 함수 오버로딩을 이용하면, 같은 함수에 다른 유형의 매개변수를 받아야 하는 코드를 작성할 때 유용합니다. 이는 생성자에도 동일하게 적용되는데, 단 소멸자의 경우는 함수 오버로딩의 적용이 되지 않습니다. 그런데 매번,..
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "[c++] 배열의 sizeof 연산자 구할 때 주의할 점(매개변수 sizeof와 차이)"입니다. #include #include using namespace std; main() { string arr[] = {"kim", "lee","choi"}; cout
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "Suspicious pointer conversion 에러"입니다. #include #include #include main() { char *p; p = getStr(); printf("%s\n", p); } char *getStr(){ char na[20] = "Mega"; return na; } 위와 같이 함수 내에서 만든 문자열 배열을 리턴해주면 다음과 같은 에러가 발생합니다. 이유는 함수내에서 지역변수인 문자열 배열의 변수 공간은 함수가 끝나는 순간 사라지기 때문입니다. #include char *getStr(); main() { char *pstr; pstr = getStr(); printf("%s\n", pstr); } char *getS..
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "C언어 sizeof(자료형) 간단정리" 입니다. #include main(){ int arr[]={1,2,3,4,5}; printf("%d\n", sizeof(arr)); printf("%d\n", sizeof(int[5])); printf("%d\n", sizeof(int)); printf("%d\n", sizeof(arr[0])); } 위와같은 배열을 출력하면 값이 어떻게 될까? 답은 아래와 같다. 우선 3번째 int는 당연히 int 형 자료형의 크기를 말하는 것이니 4바이트가 찍힌다. arr[0] 도 자료형은 int이다. int형 배열의 요소이니 어찌보면 너무 당연하다. 배열에서 arr의 이름은 주소값을 가지고 있는 변수(포인터)라는 것은 C언..
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "c언어 버퍼 비우기 (%*c)"입니다. #include int main(void){ // FILE *fp = stdin; int Age = 0; printf("나이를 입력:"); scanf("%d%*c", &Age); char Name[12] ={0}; printf("이름을 입력:"); gets(Name); printf("%d%s", Age, Name); } C언어에서 scanf 함수는 개행 문자를 같이 저장합니다. 따라서, scanf 함수 이후에 gets() 같은 함수를 쓰게 되면 버퍼에 남아있는 개행 문자가 scanf 값으로 들어가서 새로운 값을 못 받게 됩니다. 이럴 때 보통 ffluash(stdin)을 통해 버퍼를 비워버리는 방법을 쓰는데요. ..
#include #include struct Info { char *name; char kind[14]; int age; }; main() { Info a, b; a.name = "Kim"; strcpy(a.kind, "Middle"); a.age = 16; b = a; *b.name = 'C'; // 문자열 포인터는 포인터이므로 참조하는 구조체 전체 값이 변경됨 b.age += 10; printf("%s %s %d\n", a.name, a.kind, a.age); } 안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "[C언어] 구조체의 문자열포인터는 변경시 참조하는 모든 값이 변경됨" 입니다. 위와 같은 코드에서, b 구조체의 name 값 변경은 a구조체에도 영향을 준다. 왜냐하면, name 구조..
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "[C언어] 문자열 포인터와 문자열의 차이점"입니다. 문자열을 보관하는 방법은 두 가지이다. 문자열 포인터를 저장하는 방식과 재열에 저장하는 방식이다. char*na = "Mega"에서 Mega는 문자열 상수가 보관되는 메모리의 데이터 영역에 보관된다. 즉, 값을 바꾸지 못한다. char na [20] = "Mega"에서 Mega는 스택 영역에 저장된다. 따라서 값을 바꿀 수 있다. 위 두 가지 경우의 출력 결과를 살펴보자. 데이터 영역에 저장된 Mega는 getStr() 함수가 끝나더라도 사라지지 않고 값이 남아 있어 Mega가 정상 출력되었다. 반면 문자열에 저장된 Mega는 getStr() 함수가 끝나면 사라지는 stack의 값이기 때문에 리턴되는..
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "[리눅스] 500 Illegal port Error 발생시 대처법(ftp)" 입니다. ftp 사용중 ftp 내부 파일을 보기 위해 ls, dir 명령어를 쳤는데, 위와 같이 500 illegal port pass command 라는 에러가 발생했다. 고치는 법은 매우 간단하다. Passive mode를 켜주면 된다. 방법은 pass를 ftp 접속 중 커맨드에 친다. passive mode on 이 나온후 다시 dir을 쳐보니 잘 나온다. 끝.
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "[c언어] strcat 사용 시 주의할 점"입니다. #include #include #include main(){ char *arr[] = {"pascal","delphi","basic","python"}; int h; char *pa; h=0; for(int i=0; i
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "[c언어] strcpy 와 포인터 활용시 주의할점" 입니다. #include #include #include char * removeSpace(char *ps); main() { char str[] = "park mun kim choe lee "; char *pa; pa = removeSpace(str); puts(pa); delete[] pa; } char * removeSpace(char *ps){ char buff[50]={0}; char *pb = buff; int sw =0; while(*ps){ if (*ps != ' '){ *pb = *ps; pb++; sw = 1; } if (*ps == ' ' && sw == 1) { *pb = ',..
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "동적할당 활용시 주의할점 (포인터보단 인덱스)" 입니다. #include #include #include char * upper(char *ps); main(){ char str[] = "apple Banana Grape"; char *pa; pa = upper(str); puts(pa); free(pa); } char * upper(char *ps){ int n; char *pa; pa = (char*)malloc(sizeof(ps)+1); // 동적할당으로 받은 포인터 값을 계속 증가시켜 그 값을 리턴하면 안된다. pa는 보존해두는 방법을 써야 한다.(인덱스 활용) n=0; while(*ps){ if (*ps >= 'a' && *ps = 'a' ..
오늘 포스팅 주제는 "포인터와 배열을 같이 쓸때 주의 할점" 임. #include #include int * getOdd(int *parr, int n, int *oddcnt); main() { int arr[10] = {4,5,1,2,5,6,7,8,10,13}; int *pa, n; pa = getOdd(arr, 10, &n); for (int i=0; i
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "리눅스 변수 사용 주의할점~!" 입니다. 해당 포스팅은 MIT 대학의 opensource 강의를 참고 하였음을 알려드립니다. MIT linux 무료강의 echo 사용시 주의할점 리눅스 환경에서 foo=bar 라고 변수를 선언하면, echo $변수명 을 통해 변수의 내용을 뽑아 낼수 있다. 주의 할점은 쌍따옴표를 쓰면 변수값을 그래도 받아오지만 홑따옴표를 쓰면 $를 문자 그대로 인식해 버린다. 이게 헷갈리는 이유는 그냥 문자열을 echo로 출력할때는 "" 쌍따옴표와 홑따옴표 모두 동작을 하기 때문이다. 위와 같이 둘다 동작한다. 파이썬에서도 ""와 ''를 혼용해서 사용하기 때문에 혼동할 수 있다. C언어에서도 "" 와 ''은 다르게 취급하기 때문에 가..
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "c언어 0, '0' , '\0' 의 차이는?" 입니다. #include #include main() { char be[10] = "123456"; *be = 'A'; be[1] = 'B'; *(be+2) ='C'; be[3] = 0 ; puts(be); } 위와 같은 문자열배열이 있다고 하면, 배열의 값 각각은 위와 같이 변경을 해줄수 있다. 이때 puts 함수는 문자열 배열의 첫째 주소값(포인터)을 매개변수로 받는다. 출력해야할 개수를 인자로 넘겨주지 않아도 출력이 가능한 이유는 문자열 배열의 끝에 0이 들어가기 때문이다. 이때 0은 숫자 0을 의미한다. 따라서 위와같이 be[3] 에 0을 넣어주면 출력은 ABC까지만 되고 끝이 난다. 만약 숫자 ..
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "linux 리눅스 redirection() 기능 정리"입니다. 먼저 연습용 파일을 하나 만든다. cat > abc.txt 안녕하세요. 연습용 파일입니다. 끝 abc.txt라는 파일을 하나 만들었다. ctrl(Zor D)를 누르면 파일이 저장된다. 이 파일을 cat 명령어로 출력해서 보면 당연히 터미널에 출력된다. 이때 터미널은 위 그림에서 모 티너 모양에 해당하는 stdout 1번이다. 이 파일을 파일을 입력받을 때 0번(키보드) 대신에 입력의 방향으로 바꾸어 보자. cat > bcd 0 bcd ;;; bcd라는 파일을 만들어라 0 < abc.txt ;;; 입력은 abc.txt 파일의 내용을 받는다. 즉 결과..
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "linux Nesting Commnd 명령어 사용법"입니다. $ echo "Today is $(명령어)" echo 명령어로 오늘 날짜를 출력할 때 그냥 문자로 출력을 먼저 해보겠습니다. echo "Today is Date" Today is Date 위와 같이 쓰면 그냥 문자 그대로 출력이 됩니다. Date 부분에 명령어의 결과를 넣고 싶으면 $(date) 형식으로 써주면 echo 문자가 출력되기 전에 $ 부분이 먼저 치환된다. echo "Today is $(date)" Today is Sat 25 Jun 2022 12:38:53 AM UTC 혹은 $ 표시 대신에 ``(백 틱 >>> 탭키 위에 있음)을 써도 같은 결과를 볼 수 있다. echo "Toda..
안녕하세요. 궁금증연구소입니다. 오늘 포스팅 주제는 "리눅스 linux bash셸 메타 문자 의미 제거"입니다. \ (메타 문자 하나의 의미 제거) 리눅스에서 *는 모든 문자를 의미하는 메타 문자입니다. 예를 들어 d로 시작하는 모든 파일을 보고 싶다면, $echo d* 같이 쓰면 d로 시작하는 파일을 모두 찾아줍니다. 따라서 메타 문자가 들어가는 파일명으로 사용하고 싶다면 백 슬러쉬 하나를 사용해주면 됩니다. 예를 들어 파일명이 ***인 파일을 만들고 싶다면 touch \*\*\* 이런 식으로 만들어 주어야 합니다. 큰따옴표 (" ") , 작은따옴표(' ') 큰따옴표나 작은따옴표를 쓰면 메타 문자의 의미를 제거합니다. 즉 따옴표 내에 메타 문자($, ``(백 틱) 은 제외)를 출력해줄 때는 따옴표 내에..
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "bash shell 변수선언, 확인, 제거법" 입니다. $ varname=value ;;;; 변수 만들기 - 변수명은 문자나, _로 시작해야 함. 숫자로 시작하면 안됨 - a=20 (ok) - a = 20 ( error) >>> 공백을 넣으면 에러가 발생한다. $ echo $변수명 ;;; 변수 확인하기 여러가지 변수를 한번에 확인하는 것도 가능하다. echo 뒤에 $변수명 $변수명 이런식으로 연결해서 써주면 된다. 중간에 ,를 써주면 , 도 같이 echo 된다. $ set ;;; 시스템에 있는 모든 변수 보기 nl 명령어로 set | nl로 번호를 붙여보았더니,. 2051줄까지 생성된다... 어마 무시하게 많다. $ unset varname ;; 변..
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "비전공자 IT공부 학습 로드맵" 입니다. 따배런에 학습로드맵과 책소개가 있어 정리해 둔다. 공부방법 - notion에 파트별로 정리 + 모르는용어 서핑으로 첨부정리 - 모르는사람에게 이해시킬수 있어야 제대로 아는 것이다. 인프라엔지니어의 교과서
안녕하세요. 궁금증연구소 입니다. 오늘 포스팅 주제는 "리눅스 쉘 종류 " 입니다. 요즘에 리눅스를 독학으로 공부하고 있다. 유튜브에 양주종 강사님 강의가 좋아서 기본 명령어 시리즈를 정주행했는데, 배우다 보니 셸 프로그래밍에 관심이 생겨, 관련 강의를 찾아보던중 이성미 강사님 강의도 들어보게 되었다. 리눅스 쉘이 생각보다 종류가 아주 다양하다. 기본적으로 만든 사람의 이름이나, 적용기술의 이름을 따서 이름을 지었다. 내가 자주사용하는 bash shell이 Bourne-again shell의 약자라는 사실도 알게 되었다. $ cat /etc/shells ;; 사용가능한 셸의 목록을 볼 수 있는 명령어 /bin 아래의 sh 가 바로 가장 먼저 만들어진 bourn shell이다. 내가 자주쓰는 bash 쉘 ..