본문 바로가기

기초공부

[C]상수 형태의 문자열 문제를 풀던 중 헷갈렸던 부분이 있어서 정리한다. strcpy_s함수를 사용하던 중 문제가 발생했다. 왜 안 되는지 예제와 비교하여 확인해보았다. str을 포인터로 선언했고 예제에서는 배열로 선언했다는 점이 유일하게 달랐다. 실제로 배열로 선언해서 실행하니 프로그램이 원활하게 돌아갔다. 이유를 생각해보니 이전에 포인터에서 공부했던 내용과 연관시킬 수 있었다. 포인터로 선언한 문자열은 변환할 수 없고, 배열로 선언한 문자열은 변환할 수 있다. 이를 떠올리니 왜 실행이 되지 않았는지 이해했다. strcpy는 문자열을 변환하는 함수이므로 포인터 형식의 문자열을 사용할 수 없다. 그걸 까먹고 sizeof 연산자의 문제인지 한참 헤메고 있었다. 하하하.
[C]printf %c, %s 서식의 차이점 문제 풀다가 궁금증이 일어 %c와 %s와 관련하여 실험을 하였다. printf로 한 문자열을 출력하면 어떻게 출력될까. 결과는 다음과 같았다. 결과를 보고 기존의 지식과 연관지어 추론해보았다. 우선 %c를 서식으로 했을 때 문자열의 주소인 str을 출력했을 때랑 문자열의 내용인 *str을 출력했을 때를 비교해보자. %c는 한 문자를 출력하므로 전자는 문자열 주소의 첫 글자인 0이 출력되었다고 추측했다. 실제로 서식문자를 %p로 하여 주소를 출력하면 첫 글자가 0으로 나온다. 후자는 한 문자를 출력하는데 대상이 문자열의 첫글자를 주소로 하는 문자이므로 h가 출력되는 것이 당연하다. 만약 *(str+1)을 출력한다면 e가 출력되었을 것이다. %s를 서식으로 했을 때를 살펴보자. %s는 대상(이 경우는 str..
[git]prologue git을 공부하기 전에 git을 공부해야 하는 이유에 대해 알아보려고 합니다 버전 관리 동일한 정보에 대한 여러 버전을 관리하는 것을 말합니다. 팀 프로젝트를 해야한다고 가정해봅시다. 각자 자신이 맡은 일을 하게 됩니다. 모두가 동일한 버전의 프로젝트 리소스를 사용하기는 어렵습니다. 누구를 '최신' 버전으로 맞출지, 파일 주고받기는 어떻게 해야 할지 등이 고민입니다. 만약 누군가의 파일이 날아가는 경우도 문제입니다. 만약 한 파일을 여러 명이 작업해야 할 경우에도 문제입니다. 각자가 구현하다보면 다른 사람이 작업한 부분을 찾아 수정해야 하기 때문입니다. 이러한 문제들을 해결하기 위하여 git을 사용합니다 버전 관리 시스템(Version Control System, VCS) 버전을 관리하는 시스템입니다. ..
[PHP]isset() 모든 포스트 목록 isset 변수가 설정되었는지 결정하는 함수입니다. 설정되었다는 것은 변수가 선언되어 NULL 이외의 값을 가졌다는 것을 의미합니다. 만약 변수가 unset() 함수에 의해 설정이 해제되었다면, 이는 더 이상 설정된 것이 아닙니다. NULL로 할당된 변수를 검사하면 FALSE를 반환합니다. 복수의 매개변수가 존재한다면, 모든 매개변수가 설정되었다고 간주될 때만 TRUE를 반환합니다. 왼쪽에서 오른쪽으로 차례로 검사하면 설정되지 않은 변수와 만나자마자 함수가 중단됩니다. description isset ( mixed $var [, mixed $... ] ) : bool parameters var : 검사할 변수 ... : 그 외 변수 예시
[PHP]mysqli_connect_errno() 모든 포스트 목록 PHP5부터는 객체지향과 절차지향을 지원합니다. 따라서 두 가지 방식으로 사용할 수 있는데 여기서는 절차지향적 방식으로 소개할 예정입니다. mysqli_connect_errno mysqli_connect()에 대한 마지막 호출에 대한 오류 코드 값을 반환한다. 0은 오류가 발생하지 않았음을 의미한다 description int mysqli_connect_errno ( void ) : int 예시 참고 mysqli_connect_errno() 문서
[PHP]mysqli_query 모든 포스트 목록 PHP5부터는 객체지향과 절차지향을 지원합니다. 따라서 두 가지 방식으로 사용할 수 있는데 여기서는 절차지향적 방식으로 소개할 예정입니다. mysqli_query 데이터베이스에서 쿼리를 수행합니다. 만약 실패할 시 FALSE를 반환합니다. 성공적으로 SELECT, SHOW, DESCRIBE, EXPLAIN 쿼리를 수행했다면 mysqli_result object를 반환합니다. 다른 쿼리를 성공적으로 수행했다면 TRUE를 반환합니다. description mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] ) : mixed parameters link : mysqli_connect() 또..
[PHP]mysqli_connect 모든 포스트 목록 PHP5부터는 객체지향과 절차지향을 지원합니다. 따라서 두 가지 방식으로 사용할 수 있는데 여기서는 절차지향적 방식으로 소개할 예정입니다. mysqli_connect mysqli::_construct()의 별명입니다. mysqli::_construct()는 MYSQL 서버와 연결하는 함수입니다. MYSQL 서버와의 연결을 나타내는 객체를 반환합니다. description mysqli::__construct ([ string $host [, string $username [, string $passwd [, string $dbname [, int $port [, string $socket ]]]]]] ) parameters host : hostname 또는 IP 주소, 만약 NULL 값 ..
[Flask]빠르게 보여주기 - 템플릿 보여주기 모든 포스트 목록 템플릿 보여주기1 Flask를 통해서 HTML 문서를 생성할 수 있다. from flask import Flask app = Flask(__name__) @app.route('/') def index() : return 'hello' # 직접 html를 렌더링할 수 있다. if __name__ == '__main__' : app.run() 하지만 파이썬 코드 내부에서 HTML 코드를 작성하는 것은 유지보수 측면에서 매우 힘들다. 따라서 Flask에서는 Jinja2 템플릿엔진을 사용한다. render_template()를 사용하면 html 문서를 렌더링할 수 있다. 웹 템플릿 시스템 웹 템플릿 시스템은 동적으로 변수 데이터를 삽입할 수 있는 HTML 스크립트의 디자인은 참조한다. 데이터베..