프로그래밍 44

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

[리눅스] C프로그래밍 23.12.06

리눅스로 C프로그래밍을 하면서 궁금점이 생겼다. 윈도우에서 Visual Studio로 C언어를 작성했을때 출력문은 printf로 자주 사용했는데 리눅스에서는 puts로 사용하길래 어떤 차이가 있는지 찾아보았다. printf와 puts 모두 stdio.h로 사용하는 출력문이지만 puts는 오로지 문자열 출력을 위한 함수이고 printf는 정수, 실수, 문자열 모두 출력이 가능한 함수이다. 또한 printf는 \n을 입력하여 줄 바꿈을 해야하지만 puts는 \n을 입력하지 않아도 줄바꿈이 자동으로 된다. printf에서 \n 입력하지 않았을 때 모습이다. 줄바꿈이 되지 않아 문자열이 이어져 있는 모습을 볼 수 있다. 하지만 puts는 다르다. 줄바꿈인 \n을 입력하지 않아도 자동으로 줄바꿈이 된 모습을 볼 ..

C 프로그래밍 2023.12.06

23.12.05 리눅스 공부하기

리눅스 공부 순서 1. 일반 사용자로써 공부: 파일, vi, 기초문법, 쉘 //text기반(키보드로만 사용) 2. 관리자(root)로써 공부: 리눅스 설치, 프로세스, 패키지, 일반 사용자 관리 3. 서비스 공부: 웹 서비스, 메일 서비스, DNS 서비스, FTP 서비스, ... 4. 보안 공부: 로그, 서비스 열고 닫기, ... 5. 프로그래밍 공부: gcc, make, shell, ... 커널 : 운영체제의 핵심부분 리눅스 종류: CentOS(기업), ubuntu를 많이 사용 cp(copy 약자) 무엇을 어디로 man(메뉴얼 약자) ls 파일 생성: mkdir != rmdir (rm -r), vi로 생성, cat로 생성, touch로 생성 ex) vi 파일이름 복사: cp 삭제: rm 이동: mv 이..

C 프로그래밍 2023.12.05

C프로그래밍 23.12.04 리눅스 연습

리눅스의 C언어는 Visual Studio C언어와 다른 느낌이다. Visual Studio에서는 실행 잘 되던 부분인데 리눅스에서는 오류가 뜨는 것 보니 리눅스의 C언어에 대해 다시 배워야 할 것 같다. 그래도 리눅스의 명령어에 대해 하나하나 알아가는 재미는 있다. 윈도우와 다른 매력이 리눅스의 매력인 것 같다. 리눅스 명령어 간단 정리: su: root 계정으로 변경. cd /: 상위 폴더로 이동. (윈도우의 더블클릭 개념) cd~: home폴더 이동 ls: 하위폴더 확인 pwd: 현재 폴더 확인 rm: 파일 삭제 / rm -rf 폴더이름: 폴더 제거 mkdir: 폴더 생성 apt-get: 프로그램 다운받는 명령어 ex) apt-get install gcc: gcc다운로드. vi 파일명: 파일 생성 ..

C 프로그래밍 2023.12.04

C 프로그래밍 우분투 시작

C 프로그래밍을 하며 진로를 IoT 개발자로 생각하게 되었다. C언어 독학을 시작한지 별로 되지 않았기에 처음 프로젝트를 간단한 회원가입 프로그램을 생각하게 되었고, 프로그래밍을 연습하며 코드에 익숙해지게 하기위해서 블로그를 시작하게 되었다. 혼자 생각한 부분에 대해 언제까지 프로그램을 완성해보겠다는 목표와 그 목표를 이루기 위해 스스로 공부하고 배우는 것이 빠르게 기술력을 습득하는 방법이라고 생각을 했다. 그러다가 빠르게 취업을 하기 위해서 리눅스를 시작하게 되었고, 대부분 C언어는 리눅스가 기본인 것 같아 배워놓는 것이 좋을 것 같았다. 그래서 리눅스를 설치하였고, 인터넷으로 강의를 들으며 리눅스도 익히고 회원가입 프로그램에 대해 이어서 진행 하려고 한다. 태어나서 스스로 공부를 이렇게 열심히 한 적..

C 프로그래밍 2023.12.03

C언어 프로젝트 23.12.03

#include #include // getch() 함수를 사용하기 위한 헤더 파일 #include //문자열 비교함수인 "strcmp"를 사용하기 위해 string.h 라이브러리를 사용. //#include // 무한 루프 종료 조건을 위한 상수 #define LOGOUT_OPTION -1 enum loginProgram { userCreate = 1, // 회원가입 userLogin = 2, // 로그인 }; struct userInfo { // struct를 이용하여 로그인 정보 저장 char userId[100]; char userPassword[100]; char userCheckPassword[100]; }; struct userInfoCompare { // struct를 이용하여 로그인 시 ..

C 프로그래밍 2023.12.03

C언어 프로젝트 23.12.02

#include #include // getch() 함수를 사용하기 위한 헤더 파일 #include //문자열 비교함수인 "strcmp"를 사용하기 위해 string.h 라이브러리를 사용. enum loginProgram { userCreate = 1, // 회원가입 userLogin = 2, // 로그인 }; struct userInfo { // struct를 이용하여 로그인 정보 저장 char userId[100]; char userPassword[100]; char userCheckPassword[100]; }; struct userInfoCompare { // struct를 이용하여 로그인 시 아이디, 비밀번호 비교 char userId[100]; char userPassword[100]; }; ..

C 프로그래밍 2023.12.02