c언어 프로그래밍을 하다 보면 파일 io를 할 때가 있다. 여기서 파일의 총 라인 수를 얻고 싶을 때가 있다. 현업에서는 파일 라인수를 읽는것은 매우 중요하다. 이유는 다음과 같다. 예를 들어 db table을 truncate나 delete로 모두 지우고 insert 하는 일이 발생한다. insert 전에 truncate가 먼저 일어난다. 때문에 truncate를 하고 나서 insert하려고 했을때 파일 내용이 없을경우 insert가 되지 않고 db table은 데이터가 없는 상태가되어 장애를 일으킨다. 이런게 별것 아닌거 같지만 파장은 심각하다. 예를 들어 인사 정보를 새벽에 갱신하는 배치파일이 있다고 가정해 보자. 만약 인사배치파일에 오류가 생겨 한 3건이나 0건으로 파일이 넘어왔을 경우 배치파일이 ..
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 변수형이 없다는 것일거다. 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
- MySQL
- php
- ocpjp
- webix
- JDBC
- KG
- 스크래핑
- 오라클
- ocjap
- EC
- proc
- xe애드온
- 자바 smtp
- Python
- 자바 셀레니움
- esql
- C언어
- XE
- ocajp
- 파이썬
- 포인터
- 이클립스
- 인포믹스
- XE3
- 문자열
- xe addon
- 프로씨
- C
- 자바
- 파싱
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |