2023/12 38

2023.12.15 새로운 프로젝트 도전

오늘은 퇴근 후 C언어로 만들만한 프로젝트가 무엇이 있을까 찾아보게 되었다. 대부분 학생들의 프로젝트가 많다보니 게임 관련 프로젝트가 많았지만 게임 개발은 취업하는데 큰 도움이 되지 않을 것 같고, (혼자만의 재미라면 모를까) 다른게 뭐가 있을까 찾아보다가 문득 떠오른 부분이 있었는데 C언어는 하드웨어와 밀접한 프로그래밍이라고 알고 있는데 C언어로 컴퓨터를 제어할 수 있지 않을까? 생각이 들었다. 그렇게 프로젝트의 주제를 선정하게 되었다. 일단은 간단하게 알림창을 띄우는 것부터 시작하여 코딩으로 간단하게 제어판을 열어본다던지, 프로그램 도중 문제가 생겼을 때 경고창을 사용자에게 보여주는 그런 부분으로 활용도 가능할 것 같고, windows.h를 활용하여 여러가지 테스트를 할 생각이다. 당장 테스트 할 하..

C 프로그래밍 2023.12.15

리눅스 C프로그래밍 23.12.12

오늘 퇴근 후 리눅스로 회원목록보기 구현 성공하였다. 테스트로 아이디를 4개 생성 후 회원목록보기로 비밀번호 입력하니 정상적으로 출력되었다. 비밀번호 역시 getpass 함수로 작성하였고, C언어 독학 후 처음으로 만든 프로그램이 완성되었다. 다음 프로젝트는 지금 프로젝트를 이어서 뭔가를 계속 만들지, 아니면 새로 만들어서 다른 함수를 이용하여 개발할 지 생각중이다. 프로젝트는 끝났으니 프로그래머스 사이트를 이용하여 C언어 공부하는 것도 나름 프로그래밍 기술을 익히는데 도움이 될 것 같기도 해서 이만 쉬고 내일 생각해봐야겠다. &나의 미래에 대한 고민 30대에 개발자로 취업하기 위해서 늦게 공부를 시작했고 올해 꼭 IT 계열로 취업해보고자 하는 마음에 23년 4월에 정보기기운용기능사를 취득하였다. 개발분..

C 프로그래밍 2023.12.13

리눅스 C프로그래밍 23.12.11

오늘은 퇴근 후 리눅스로 회원가입 프로그램 프로젝트를 이어서 시작하였다. 오늘은 새로운 코드를 알게되었다. 비밀번호 보안을 위해 getpass함수를 사용하고 싶었고, Visual Studio에서 사용했던 것처럼 1차와 2차 비밀번호 비교 후 일치하면 회원가입 성공이 되고 다르면 실패가 되게 구현하고 싶었다. 회원가입 성공 후 리스트로 아이디와 비밀번호 저장을 하고 싶었고, 로그인 시 가입되어있는 아이디와 비밀번호를 찾아 비교 후에 로그인 성공과 실패를 작동시키고 싶었다. 그래서 오늘 알게 된 코드는 비밀번호를 getpass함수로 사용자가 입력한 비밀번호를 구조체에 저장하는 코드인데 strncpy를 이용하는 것이다.//예제 //구조체 test로 생성 struct test { char Password[10]..

C 프로그래밍 2023.12.11

C프로그래밍 23.12.10

#include #include #include #include enum userInputNum { input_SignUp = 1, input_Login = 2, input_Admin = 3, input_Exit = 4 }; // 회원 정보를 저장하기 위한 구조체 struct Member { char username[50]; char password[50]; char checkPassword[50]; }; // 전역 변수로 회원 정보 배열 선언 struct Member members[100]; int memberCount = 0; void clearInputBuffer() { //사용자가 문자열 입력 시 무한루프 방지 int c; while ((c = getchar()) != '\n' && c != EO..

C 프로그래밍 2023.12.11

C프로그래밍 23.12.09

8일에 찾아본 코드를 테스트 해본 결과 혼자 생각한 결과와 조금 다르다. 구조체에 정보를 저장하는 것이 아닌 것 같다. 조금 더 테스트를 해봐야겠다. 지금은 main함수 내에 ID, PASSWORD 변수를 만들었고 init함수를 입력 후 뒤에 변수를 넣어보고 출력을 해보았는데 main함수 내에 만든 변수에는 값이 잘 저장되나 구조체에 있는 포인터 변수는 다른 값이 들어가있는 것 같다. 일단 init 함수 내에 const char *value 부분이 main함수 내 init()함수에서 뒤에 입력한 값("hello")이 init함수의 *value로 넘어가고 *value에서는 구조체의 *str로 값이 전달되는 것 같은데 이해를 잘못 하고 있는건지.. 내가 예상한건 *str에 사용자가 저장한 값이 들어갈 줄 알..

C 프로그래밍 2023.12.09

C프로그래밍 23.12.08

리눅스로 회원가입 프로그램을 구현하면서 문제점을 하나 발견하였다. 구현하고 싶은 프로그램은 struct (구조체)를 이용하여 사용자의 아이디, 비밀번호를 회원가입을 통해 저장할 수 있게 하고, 프로그램을 봤을때도 조금 더 깔끔하게 작성하고 싶었다. 이 부분은 성공했지만 더 공부하고 싶은 내용은 구조체에 있는 변수를 포인터를 통해 사용자의 정보를 저장하고 싶었고, 또한 보안을 위해 비밀번호를 getpass함수를 이용하고 싶었다. 그러던 중 정보를 찾은 것 같다. 기존 회원가입 프로그램을 수정하여 테스트하면 되지 않을까 싶다. 이 부분은 연습용으로 만든 코드이다. 구조체를 만들고 포인터로 str을 작성하였고, init 함수는 문자열을 동적으로 할당하고 포인터에 저장하는 함수이다. printS 함수는 구조체 ..

C 프로그래밍 2023.12.08

[리눅스] 23.12.07

오늘도 퇴근 후 만져보는 리눅스. 프로그래밍 후 작동 시킬때마다 조금 불편함이 있었다. 물론 익숙해지면 크게 불편함은 없겠지만 말이다. 일단 기본적으로 gcc 명령어를 입력하면 기본값이 a.out인 것 같다. 그래서 프로그램을 실행시킬 때 a.out를 입력하여야 하는데, 항상 앞에 ./를 입력해야 한다. 그래서 찾은 방법이 PATH=$PATH:.를 입력하면 ./을 입력하지 않고도 a.out만 입력하면 된다. 기존: ./a.out 변경: a.out 이렇게 하면 조금 더 편하게 프로그램을 실행 할 수 있다. 또한 a.out 말고 임의로 이름을 만들고 싶다면 "gcc -o (프로그램 실행 할 이름) (프로그램 이름)"을 입력하면 된다. gcc -o ex001 001.c라고 입력하면 ex001만 입력 했을 때 ..

C 프로그래밍 2023.12.07

C프로그래밍 23.12.06 리눅스로 회원가입 만들기

오늘 퇴근 후 리눅스로 C 프로그래밍을 진행하였다. 원래 만들려고 했던 회원가입 프로그램이다. 오류가 발생되는 부분은 인터넷으로 정보를 찾아보고 ChatGPT의 도움을 받아 조금씩 만들어보고 있는 중이다. 리눅스의 C언어는 Visual Studio로 작성한 C언어와 아주 약간 다를 뿐 크게 다를게 없어 다행히 잘 따라 할 수 있었던 것 같다. 하지만 리눅스에 대해 잘 모르는 것인지 모르겠지만 자동완성 기능이 없어 불편함이 있다. 물론 코드 하나하나 직접 입력하는 것이 더 공부는 되겠지만 가끔 코드의 명령어가 기억이 나지 않을때면 명령어를 찾아봐야해서 조금은 힘들었다. 이 또한 겪어야 하는 문제라면 긍정적으로 생각하고 몸에 베길때까지 복습 또 복습하는 시간이라고 생각하고 있다. 왼쪽은 코드 화면, 오른쪽은..

C 프로그래밍 2023.12.06