서점에 가면 수 많은 c언어 책이 있다. 우연히 뇌를 자극하는 C프로그래밍 책을 봤는데 그림을 활용해서 이해하기 좋게 써놨다. 그래서 씨언어 공부하는 사람들에게 좋을것 같아 이렇게 추천글 포스팅을 해본다. 학교에 다닐때 C언어 책을 몇권 샀는데 다들 허접했다. 특히 교수가 지정해준다 무슨책 사라고. 근데 그 책을 사보면 허접하고 저자는 그 책을 사라는 교수 이름이 적혀있다. 이런 허접한 시스템에서 살았다니.. 학생들을 돈벌이 수단으로 이용해 먹으려는 교수들.. 각성해야 한다. 책이 좋으면 말을 안한다. 지금 보면 어떻게 이렇게 허접하게 썼을까.. 그것도 대학원생들 시켜서 쓴거 같다. 대학원생들이 제대로 쓰겠냐.. 교수가 시켜서 그래서 대충 검색해서 썼겠지.. 이런책을 학생들에게 사라고 강요하다니.. 정말..
EXEC SQL BEGIN DECLARE SECTION; typedef struct { char a[100]; char b[100]; } S; EXEC SQL END DECLARE SECTION; void test(p) $PARAMETER *p; { $char work1[100]; $char work2[100]; memset(work1,0x00,sizeof(work1)); memset(work2,0x00,sizeof(work2));memcpy(work2,"a2",sizeof(work2)); EXEC SQL connect to "dbname"; EXEC SQL DECLARE test_cur SCROLL CURSOR FOR SELECT a FROM test WHERE a=:p ; //포인터변수로 사용한다. ..
이번에는 구조체를 사용하고 함수를 이용한 ESQL 프로그램을 해보겠다. EXEC SQL BEGIN DECLARE SECTION; typedef struct { char a[100]; char b[100]; } S; EXEC SQL END DECLARE SECTION; void test(s) $PARAMETER S *s; { $char work1[100]; $char work2[100]; memset(work1,0x00,sizeof(work1)); memset(work2,0x00,sizeof(work2));memcpy(work2,"a2",sizeof(work2)); EXEC SQL connect to "dbname"; EXEC SQL DECLARE test_cur SCROLL CURSOR FOR SELEC..
보통 C 프로그램은 구조체를 사용한다. 그래서 이번에는 구조체를 사용하여 ESQL 프로그램을 해보겠다. EXEC SQL BEGIN DECLARE SECTION; typedef struct { char a[100]; char b[100]; } S; EXEC SQL END DECLARE SECTION; main(int argc, char *argv[]){ $S s; memset(&s,0x00,sizeof(S)); //배열일 경우는 배열명이 포인터니 그냥 배열이름을 써도 되지만 구조체는 구조체명이 포인터가 아니기 때문에 &붙여서 포인터를 만든다 $char work1[100]; $char work2[100]; memset(work1,0x00,sizeof(work1)); memset(work2,0x00,sizeo..
main(int argc, char *argv[]){ $char work1[100]; $char work2[100]; memset(work1,0x00,sizeof(work1)); memset(work2,0x00,sizeof(work2)); memcpy(work2,"a2",sizeof(work2)); EXEC SQL connect to "dbname"; EXEC SQL DECLARE test_cur SCROLL CURSOR FOR SELECT a FROM test WHERE a=:work2 ; EXEC SQL OPEN test_cur; while(1){ EXEC SQL FETCH NEXT test_cur INTO :work1; if(sqlca.sqlcode==100){ break; }else if(sqlc..
자바는 스트링 변수가 있어 문자열 붙일때 그냥 + 하면 문자열이 붙는다. 하지만 c언어는 스트링 변수가 없어서 문자열을 다룰때 char 배열을 사용해야 한다. 또한 문자열 붙일때 + 사용할 수 없고 함수를 사용한다. 그중 strcpy와 strcat 함수를 살펴보면 char string[80]; //초기화 생략 memset strcpy(string,"Hello"); 하면 string 배열에 Hello가 들어가고 끝에 널문자 '\0'이 붙는다. 그리고 strcat(string,"World"); 하고 string을 찍어보면 HelloWorld 라고 찍힌다.
자바 개발자들은 문자열 다룰때 그냥 + 연산자 쓰면 문자열끼리 붙었고 문자열 쓰기도 쉬웠다. 그러나 c언어는 자바나 php등의 언어에 비해 문자열 다루기가 다소 까다롭다. 그 이유는 문자열은 배열로 처리해야 하기 때문에 문자열에 필요한 작업은 배열요소를 일일히 참조해야 한다. 자바 개발자들은 짜증이 나겠지만 그래도 어떻겠나. c언어 하려면 적응해야지.. 우선 c언어에 "apple" 이라고 있으면 문자열 맨 끝에 널문자('\0')가 같이 저장되어 있는다. 즉, 'a' 'p' 'p' 'l' 'e' '\0' 이런식으로 메모리 어디엔가 저장되어 있다. 그래서 char app[5]="apple"; //배열 선언과 동시에 초기화 가능하다. char app[5]; app="apple"; 이거는 안된다. 배열명 app..
typedef struct{ char a[8]; char b[8]; char c[8]; }A_H; void test2(A_H *a); void test(A_H *a){ printf("a at test=[%s]\n",a); test2(a); //이미 a는 포인터 변수이기 때문에 함수 호출시 파라미터로 그냥 써준다. } void test2(A_H *a){ printf("a at test2=[%s]\n",a); } int main(int argc, char* argv[]){ A_H a_h; memset(&a_h,0x00,sizeof(A_H)); memcpy(a_h.a, "abcdabcd",8); memcpy(a_h.b,"1234567",7); printf("a_h=[%s]\n",&a_h); test(&a_h)..
c언어를 하다보면 외부기관과 전문통신을 할 경우가 생긴다. 외부기관과의 통신하는 방법은 여러가지가 있다. 메시지 교환 형식은 soap, xml, json 등등.. c언어 특히 금융기관에서 자주 쓰이는 방식은 전문 통신 즉, 캐릭터(char)를 쫙~ 붙여서 만들어 tcp/ip 소켓통신으로 메시지를 주고 받는다. json이나 xml은 key,value 방식이라 key만 봐도 대출 value가 의미하는것을 안다. 그러나 전문통신은 char가 쫙~ 붙어있는 방식이라 전문 설계 레이아웃 문서(보통 엑셀형식)가 없으면 전문내용 파악이 불가능 하다. 그래서 보안이 중요시된 금융권에서는 사람이 보기 힘들어도 이러한 전문 통신을 고수하는것 같다. 예전 부터 이렇게 하고 있었던것도 있을 수 있고... 그래서 샘플 소스를 ..
- Total
- Today
- Yesterday
- XE
- 자바 smtp
- JDBC
- xe addon
- php
- KG
- ocjap
- 라이믹스 모듈
- esql
- 플러터
- 파싱
- proc
- 문자열
- 이클립스
- 오라클
- xe애드온
- ocajp
- 인포믹스
- MySQL
- 스크래핑
- C
- 프로씨
- XE3
- webix
- C언어
- Python
- 파이썬
- 포인터
- EC
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |