자바는 스트링 변수가 있어 문자열 붙일때 그냥 + 하면 문자열이 붙는다. 하지만 c언어는 스트링 변수가 없어서 문자열을 다룰때 char 배열을 사용해야 한다. 또한 문자열 붙일때 + 사용할 수 없고 함수를 사용한다. 그중 strcpy와 strcat 함수를 살펴보면 char string[80]; //초기화 생략 memset strcpy(string,"Hello"); 하면 string 배열에 Hello가 들어가고 끝에 널문자 '\0'이 붙는다. 그리고 strcat(string,"World"); 하고 string을 찍어보면 HelloWorld 라고 찍힌다.
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)..
인터넷을 뒤져도 proc나 esql에 대한 자료가 없어서 가장 기초적인 select 프로그램을 짜봤다. 이것만 마스터 한다면 어떠한 프로씨 프로그램도 코딩 기능하리라 본다. 참조로 c언어는 자바와 달라서 error handling을 안한다. 즉, 자바는 에러, exception이 발생하면 자동으로 exception handling을 하려 에러를 보여주는데 c언어는 그냥 에러가 발생해도 넘어간다. 즉 개발자가 일일히 에러가 발생할 만한곳에 에러 핸들링 코딩을 하지 않으면 자바처럼 에러를 뱉고 끝나는게 아니라 그냥 넘어간다. 자바를 먼저 코딩한 사람들은 이게 이상하다고 생각할 수 있는데 어쩔때는 장점도 될 수 있다. 구지 에러나도 안멈춰도 될만한 곳에는 그냥 넘어가니 좋다. 그러나! 일반적으로 에러코딩을 넣..
c언어에는 저바의 split 같은 함수가 없다. 그래서 만들어준다. char *strsep(register char **stringp, register const char *delim){ register char *s; register const char *spanp; register int c, sc; char *tok; if((s=*stringp)==NULL) return(NULL); for(tok=s;;){ c=*s++; spanp=delim; do{ if((sc=*spanp++)==c){ if(c==0) s=NULL; else s[-1]=0; *stringp=s; m_rtrim(tok); return(tok); } }while(sc!=0); } } //오른쪽 끝에 있는 공백 삭제 void m_rt..
자바개발자들이 c를 할때 가장 황당한게 String 변수형이 없어서일 것이다. 그럼 스트링을 리턴하는 함수를 어떻게 만들지?? 자바 같으면 간단히 스트링 변수를 리턴하면 되는데 c는 그렇지가 않다. 아래와 같이 포인터를 리턴해야 한다. 먼저 프로토타입을 선언한다. char * GetDateMonthAgo(); int main(argc,argv) int argc; char *argv[]; { printf("1달전=[%s]\n",GetDateMonthAgo()); } char * GetDateMonthAgo(){ $char monthago[100]; $database db명; $select monthago into :monthago from 테이블명; return &monthago; //이런식으로 포인터를 ..
자바개발자가 c언어를 할때 가장 힘든것이 String 변수형이 없다는 것일거다. String 변수형이 있으면 문자열(스트링)을 다루기 쉬운데 c언어는 없으니 char 배열로 사용해야 한다. 사실 자바나 다른언어의 문자열형도 내부적으로는 char 배열로 되어 있다. 사람이 사용하기 편하게 String 변수형이 있는것이다. char word[50]; word[0]='a'; word[1]='b'; printf("%s\n",word); 해서 출력하면 ab경경경경경경경경경경 머 이런식으로 출력된다. 이렇게 쓰레기 값이 찍힌다. 그래서 char 배열 마지막에는 널문자 '\0'을 넣어 문자열의 끝을 알려줘야 한다. char word[50]; word[0]='a'; word[1]='b'; word[2]='\0'; pr..
간접멤버참조연산자(->)는 구조체 포인터변수로 그것이 가리키는 구조체변수의 멤버를 참조할 때 사용한다. 연산자의 왼쪽에는 구조체 포인터변수를 사용하고 오른쪽에는 구조체변수의 멤버가 사용된다. 소스코드를 살펴보면 char wk_char1[1+1]; memset(wk_char1,0x00,sizeof(wk_char1)); memcpy(wk_char1,i515391.id_gubun,1); i515390.id_gubun=antoi(wk_char,1); //여기서 main함수를 호출하면 main(&i515390); int main(i515390) I515390 *515390; { //메인함수에서는 간접멤버참조연산자를 통해 멤버값을 참조한다. i515390->id_gubun; }
자바는 string 문자열이 있지만 c언어는 없다. 그래서 좀 짜증나지만 어쩌겠나.. 문자열은 여러개의 문자가 모이면 된다. 문자열을 표현하는 방법은 큰 따옴표("")로 문자열을 묶어주면 된다. 이것을 문자열상수라고 하고 컴파일러는 문자열상수를 연속적인 문자상수들의 비트열로 번역한다. 예를들어 "abcd" 가 있다라고 하면 전체는 5바이트면 마지막 문자 다음에 모든 비트가 0인 한 바이트를 더 추가한다(즉, 0000 0000). 이것을 널문자(null character)라고 한고 문자열의 끝을 표시해 주는 역할을 한다. 널문자의 표현 -> '₩0'
c언어의 기초인 자료형을 확인해보자 헷갈릴 수 있지만 크기를 정확히 알아야 나중에 더 고급프로그래밍 하는데 헷갈리지 않는다. 더구나 자바는 string이라는 자료형이 있지만 c언어는 string 자료형이 없고 char 배열을 사용해 문자열을 다루어야 하니 크기를 정확히 알아야 나중에 잘 다룰 수 있다. 먼저 예제를 통해 배워보자. int main(int argc, char* argv[]) { printf("size of int=[%d]\n",sizeof(int)); printf("size of 1=[%d]\n",sizeof(1)); printf("size of 622115=[%d]\n",sizeof(622115)); printf("size of char=[%d]\n",sizeof(char)); print..
- Total
- Today
- Yesterday
- C
- webix
- 스크래핑
- EC
- C언어
- 이클립스
- JDBC
- proc
- KG
- esql
- MySQL
- 오라클
- 파싱
- xe애드온
- 라이믹스 모듈
- 포인터
- 문자열
- xe addon
- 인포믹스
- 프로씨
- php
- ocajp
- 자바
- ocjap
- Python
- XE3
- 파이썬
- 플러터
- 자바 smtp
- XE
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |