2010년 12월 2일 목요일

망할 모토로이 버리고 싶다 ㅠㅜ

모토로이 써온지 벌써 4개월째 되네요

1달전 USB 인식 고장으로 A/S 센터를 5번 왔다 가따 했는데
여전히 심각한 터치렉에 시달리고 있습니다.

증상은....
쓰다 보면 터치 감이 떨어지는 듯 하다가
점점 터치가 렉이 걸리고
심하면 아예 터치 반응이 없어 집니다.

처음 살때 부터 충전기 꼽아 놓으면 터치 안되는 현상은 있었으나
그것 보다 심각하게 안되요 ㅋ

A/S를 받고 부터 이랬는데.....

이넘이 보통때는 잘된단 말이지요 ㅋ
게다가 터치가 않되도 전원버튼 눌렀다 다시 켜면 잘됩니다.
물론 전원 버튼 눌러서 조금 기다려 줘야 복구 됩니다.

5번 연속으로 방문한 충격과 회사의 눈치로 또 가기 싫어 버티다
하도 짜증이 밀려와 이번에
메모리카드 포멧,
공장 초기화,
홈페이지의 소프트웨어 업그레이드 까지 해봤지만....
증상이 개선되지 않습니다.
아 약간 그런 현상이 덜 벌어 지는 듯은 하지만요;;;

다른 분들도 이런 경우 있으신가요??

여담... 모토로이 A/S 센터 5번 방문기~
1. USB가 인식이 안되어 모토로이 서비스 센터에 방문 했습니다.
USB단자가 불량인듯 하나 부품이 없어 수리 할수 없다는 군요.
4일 뒤에 오라더군요..

2. 일주일 뒤에 다시 방문...
수리를 받았으나 회사 와서 확인해 보니 되다 안되다 합니다.

3. 다시 방문
단자 불량은 아니고 보드가 불량인듯 하나 부품이 또 없다는 군요...
미안 하신지 다음날 오라 시더군요...

4. 다음날 방문...
수리를 해 주셨는데....
메모리 카드가 다른 분꺼랑 바꼈더군요...
지하철 타러 갔다가 다시 가서 메몰 교환 받으려 했는데
연락처 정보도 다른 분것이 들어가 있어서 부득 지워야 한다더군요....
시간이 없어서 그냥 포맷해 달라 했습니다.

5.  USB는 잘되는데 와서 확인해 보니 카메라가 않됩니다 --;;
다시 방문... 다 고쳐 주시고 그날 퀵으로 보내 주시더군요...

현재...
터치 렉 심함 --;;;;

솔직히 A/S 직원분 친절은 했습니다.
모토로라는 어쩌다 모토로이 같은걸 많들어서 사서 고생 하는 걸까요;;;
사실 싸고 괞찮은 녀석이긴 하지만...
저런 불량이 있기 때문에 싼건 아니지 않습니까?

정말 또 가려니 귀찮고 막상 가도 해결 될런지 의심 스럽네요..
터치가 않되는 현상 재현 하기도 짜증나구요 ㅋ

2010년 11월 14일 일요일

망할 폴더가 사용중이라 지워지지 않을때 지우는 법

일단 로그아웃 하거나 재시작 하면 지워집니다...
진짜에요;;
아신다구요?

일단 망할 현상 부터 되짚어 보죠. 
망할 지우려고 해도 이런 창이 뜨면서 지울 수가 없습니다.
저는 쓰고 있지 않는데...
귀신이 쓰고 있는게 틀림 없습니다!!!

자 정말 귀신이 쓰는지 확인해 보죠.
다음 프로그램을 따운 받습니다.

Process Explorer v12.04


현제 12.04 버젼 이군요.
설치는 필요 없고 적당한 곳에 압축을 풀면 됩니다.
바로 실행 해보죠.

1. 메뉴 -> Find -> Find Handle or DLL... 을 누릅니다.
2. 창이 뜨면 Handle or DLL substring: 에 않지워 지는 파일,
또는 디렉토리를 적어 Search 를 눌러 찾아 봅시다.
저의 경우 "eclipse"를 쳐 넣었습니다.
저런!! adb.exe 라는 녀석이 범인이었습니다.
더블클릭 해서 범인을 지목 합시다! 

다음 해당 파일에서 오른쪽 클릭을 하면
Close Handle 라는 메뉴가 보일 것입니다.
클릭 하면 경고는 살포시 무시해 주고~
그럼 망할파일을 지울 수 있게 됩니다.

2010년 11월 8일 월요일

C언어 - 가변인자 사용(pritnf 같은 함수를 만들자!!)

printf() 함수는 참 신기 합니다.

printf("정수? %d, 문자열? %s", 5, "문자열이긔");

인자가 3개네요.

printf("실수? %f, 문자열? %s, 정수? %d", 3.14, "문자열이긔", 7);

이번엔 또 인자가 4개군요.

C언어에서는 함수의 오버로딩을 지원 하지 않습니다.
결국 원형은 하나라는 건데..
그럼 printf()함수는 원형이 어떻게 생겼을까요?

#include <stdio.h>

비밀은 여기에 있습니다.
우리가  printf 함수를 쓰면서 당연히 인클루드 하던 stdio.h
 파일 열어 보신  있으신가요?
한번 열어서 printf()함수를 찾아 봅시다.

_Check_return_opt_ _CRTIMP int __cdecl printf(_In_z_ _Printf_format_string_ const char * _Format, ...);

웁스;;
이건 암호도 아니고;;;; 별 도움이 않되겠네요;;
오히려 헷갈리는 --;;

그럼 모르는 것 빼버리고 우리가 알고 있는 함수 처럼 만들어 봅시다.

int printf(const char * _Format, ...);

그래도 모르는게 하나 남았네요.

...

장난 하나요? 무슨 쓰기 싫어서 ... 으로 생략 했나 봅니다.
는 아니고 사실 비밀은 저 ...에 있습니다.
우리가 아는 그대로 나머지 인자는 여러개가 있을 수 있다는 이야기 입니다.

아하 그럼 우리도 함수를 저렇게 선언하면 가변적인 인자에도 대응 할 수 있겠군요?
네 그렇습니다.

자 함수 하나 만들어 보죠~

그전에 메인 함수 부터 만들어 보죠.

int main()
{
     vaFunc(3, "Hello", "World", "!!!");

     return 0;
}

vaFunc() 라는 함수가 가변적으로 인자를 받는 함수입니다.
그럼 선언은

int vaFunc(int argc, ...)

뭐 이렇게 하면 되겠죠?
다음 vaFunc() 함수의 몸체를 써내려가야 하는데...
argc는 쓸 수 있는데 그 다음 부터는 어떻게 하죠?

자 여기서 쓰는것이 va_list 라는 것입니다.

va_list 및 가변 인자에 관한 것은 <stdarg.h> 파일에 정의 되어 있습니다.

#include <stdarg.h>

하시고,

int vaFunc(int argc, ...)
{
     va_list argptr;
     char *strTemp;
     int i;
     va_start(argptr, argc);

     for(i = 0; i < argc; ++i)
    {
          strTemp =  va_arg(argptr, char *);
          printf("Arg %d = %s\n", i, strTemp);
     }
  
     va_end(argptr);
  
     return 0;
}

내용물을 체웁시다.

눈썰미 있는 분은 코드만 봐도 아시겠네요.

먼저

va_list argptr;

가변인자를 처리하기 변수를 선언 합니다.

va_start(argptr, argc);

다음으로 가변인자가 시작될 위치를 지정하죠.
우리가 만든 함수와 printf() 는 고정 부분이 하나지만
여러개가 올 수도 있답니다.

vaFunx(int arg1, float arg2, ...);

등으로 말이죠.
위의 경우는

va_start(argptr, arg2);

로 해줘야 합니다.
가변인자는 arg2 다음에 오니 말이죠 ㅎㅎ

strTemp  = va_arg(argptr, char *);

가변인자의 인자를 하나씩 strTemp 에 대입해 줍니다.
"Hello", "World", "!!!" 순으로 말이죠.

눈치 체신분도 있으실텐데...
가변인자는 인자의 갯수를 알 수 있는 수단을 제공해야 합니다.
그래서 처음 인자를 뒤의 인자의 갯수로 써주는 것입니다.
그럼 printf()의 경우는??

printf("Arg %d = %s\n", i, strTemp);

를 보시면 삘이 확 오시나요?
그렇습니다.
%d, %s 이런것을 보면 뒤에 오는 인자의 갯수를 알 수 있답니다.
조심해야 할점은 뒤의 인자의 갯수는 모자라면 않된다는 점입니다.
메모리 접근 위반이 나겠죠?
또한 인자의 타입도 달라서는 않됩니다.

마지막으로

va_end(argptr);

내부적으로 초기화를 수행해 완료 작업을 합니다.
메모리 누수가 발생할 수도 있으니 빼먹지 맙시다.

이것으로 우리도 가변인자를 지원하는 함수를 만들 수 있겠네요~

2010년 11월 4일 목요일

Captains of Crush - COC 악력기 구입

에제 주문한 COC 악력기가 배송 됬다.

친척동생 선물로 줄 Trainer 한개랑 No. 1 한개 해서 두개 주문했다.


좌 : Trainer 우 : No. 1
크기가 미묘하게 다르다;;

참고로 COC 악력기의 장력은 다음과 같다.

1. Trainer - 100 lb.(45.3kg)
2. No1 - 140 lb.(63.42kg)
3. No1.5 - 167.5 lb.(75.88kg)
4. No2 - 195 lb.(88.35kg)
5. No2.5 - 237.5 lb.(107.59kg)
6. No3 - 280 lb.(126.84kg)
7. No3.5 - 322.5 lb.(146.09kg)
8. No4 - 365 lb.(165.35kg)

일단 내가 사용할 것은 No. 1 평소에도 운동 별로 안한넘 치고
팔씨름도 꾀 하고 악력도 자신있었기에 No. 1 부터 샀는데...

개봉 후 바로 잡아 봤는데 금속 가루가 좀 묻어 났다.
몇번 잡으니 계속 묻어나지는 않는다.

일단 오른쪽은 끝이 서로 닿게 간신히 성공..
그렇게 사진을 찍으려 했는데...
모토로이가 꾸져서
왼손으로 촬영에 집중하면(한 몇초간 누르고 있어야함)
오른손 힘이 풀리더라는 --;;
왼손은 미묘하게 힘이 모자란다...

뭐 잡혀야 운동이 되지 --;;
그나저나 친척 동생...
Trainer 사준거 잘하는 짓일까....?

COC 악력기 구매처

11월 8일

흠흠;;
왜 한개도 못하겠지????
전엔 됬었자나!!
왜!!

ㅠ_ㅜ

2010년 11월 3일 수요일

스타벅스 2011 플래너 증정 이벤트 개시

오늘 스타벅스를 갔는데
올해도 어김없이 스타벅스 플래너를 주는
이벤트가 시작 되었다.

이벤트 음료인
페퍼민트 모카, 토피 넛 라떼,
오늘의 커피-크리스마스 블렌드
3잔을 포함 하여 총 17잔을 마시면 된다는데...
뭐 단순 계산으로 5000원씩 치면 17잔이니 총 85,000원
하루에 1잔씩 무도 17일...
흐미 여친이랑 스타벅스만 가야 할 듯 하다.

플래너는 따로도 팔고 17,000원 이라는데

쿠폰도 3개나 들어 있고 매니아라면
도전해 볼만할듯 하다.

제세한 정보는 스타벅스 홈페이지에서~

플래너 받고 싶당 ㅎㅎ


스티커 카드 입니다.
크리스마스 음료는 암꺼나 3장 빨간색이구요.
다른 음료는 흰색 14장 붙여야 합니다.

언제 다모으지 -ㅁ-;;

요즘 먹는 감기약

그제 아침 부터 콧물이 홍수 -ㅁ-;;
몸살 기운도 있고 해서 집에 굴러 다니던 감기약을 챙겨 먹었다.
일본에서 먹던건데 유통기한 2013년으로 길당.

















평소에 약을 안 챙겨 먹는지라 약빨이 잘듣는다.
하루 3회 1회에 3알씩 63알 들었당.
21회니까 일주일 분량밖에 않되는구낭;;;
63알이면 대박 많은뎅 ㅎㅎ
7일이라니 짧네;;

아무튼 이 녀석 덕에 감기도 거의 나았다.

그래도 무엇보다 예방이 중요해요~
손 잘씻고, 양치 잘하고, 피로 조심하고, 잘 챙겨 먹읍시다!

2010년 11월 2일 화요일

Android Google 맵 API 디버그용 키 얻기

책에 있는 코드를 그대로 했는데도 지도가 않나와요!
...
그렇습니다.
그럼 지도가 않나옵니다.


지도를 사용하려면 (구글 맵 API를 이용하려면) 해당 컴퓨터에 있는
API 키라는 것을 입력 해야 합니다.
책에 있는 키는 저자분 PC의 API 키 이구요.
각자 자신의 PC의 MD5 인증서 코드에 맞는 API 키를 입력 해야 합니다.


MD5 인증서 코드.. 요건 어딨냐면..


1. 먼저 이클립스의
메뉴 -> Window -> Preferences
Android -> Build
Default debug keystore: 부분의 경로를 확인 합니다.
















제 경우
C:\Users\Hermina\.android\debug.keystore
입니다.


2. 다음으로 자바 SDK가 설치된 폴더를 환경변수에 추가 합니다.
생략해도 되나 해두면 편리 하니 추가해 둡니다.


윈도우즈의 (윈도우즈 7기준)
내 컴퓨터에서 우클릭->등록정보->고급 시스템 설정
고급 탭-> 환경변수
시스템 변수에 Path에 추가 할 수 있습니다.
변수 값에 자바 SDK의 bin 폴더를 추가 하면 됩니다.
제 경우 C:\Program Files\Java\jdk1.6.0_22\bin
이걸 추가 했습니다.
추가 할때 구분자는 세미콜론 ( ; ) 을 붙여 주고 하십 됩니다.


3. 다음 PC의 MD5 지문을 얻어 냅니다.
1번에 구할 C:\Users\Hermina\.android\debug.keystore 에 들어 있으며
2번에 추가한 디렉토리의 keytool 로 구할 얻을 수 있습니다.
윈도우즈의 시작메뉴->프로그램 및 파일 검색에 (XP는 실행)
cmd를 입력 합니다.
1에서 구한 경로로 이동합니다.
cd C:\Users\Hermina\.android\
2의 툴로 MD5를 얻습니다.
keytool -list -keystore debug.keystore
암호는 android 입니다.









인증서 지문(MD5) 를 복사 해 둡니다.



4. 구글의 Android Maps API의 Sign Up 페이지에 접속 합니다.


http://code.google.com/intl/ko-KR/android/maps-api-signup.html


계약 내용에 동의 하면 I have read and agree with the terms and conditions에 체크를 하고
My certificate's MD5 fingerprint: 에 3에서 구한 MD5키를 입력 합니다.
Generate 클릭~


???????????????????????????? 가 난무 하지만
MD5 위에 암호 같이 생긴게 API 키 이다.













5. 이클립스의 프로젝트의 res / layout / main.xml (디폴트라면)의
android:apiKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
부분을 4번에서 얻은 키로 바꿔 줍니다.


자 프로젝트를 재 빌드 하면 지도가 나올껍니다.


2010년 10월 30일 토요일

해외 경력자의 소프트웨어 기술자 경력신고에 관한 불편 사항 - 국민신문고에 투고 --;;

ㅠㅜ
소프트웨어 기술자 경력신고 넘 귀찮당;;

일본에 있을때 이런게 생겼다는 사실은 알고 있었지만 그때는 일본에 있었고 급작스럽게 한국으로 돌아 오고 나서는 관련 서류를 준비 하자니 막막 하기만 했다.
그래서 소프트웨어 기술자 경력신고에 관해 국민신문고에 투고를 했었는데 투고 내용과 그 답변이다.

이런 글 하나로 뭔가 바뀔꺼라 기대한 것은 아니고 하소연격이 었던 지라 답변이 위안은 된다;;

해외에 계신 분들은 저처럼 경력 깎이지 마시고 미리미리 준비 하세요~

올린글 : 2010.09.10. 17:20:58
안녕하십니까.
저는 일본에서 4년정도 근무 하다 얼마전에 귀국한 사람입니다.

일본으로 취업 할 때만 해도 [소프트웨어 기술자 경력신고]라는 제도가 없었는데 일본에 있는 동안 생겼더라구요.
최근 취업을 위해 여기저기 알아보고 있는데 큰 회사나 정부 관련 프로젝트를 하는 기업은 위 제도를 통해 신청한 "증명서"를 요구합니다.
물론 해외 경력도 인정 받을 수 있는 방법은 있지만 신청이 까다롭습니다.
한국 소프트웨어 산업협회 홈페이지엔 공증만 받으면 되는것 처럼 써있지만 국내에서 그것을 받기위해선
1. 일본회사에 지정양식의 서류를 보낸다.
2. 일본회사에선 확인 후 날인을 하여 요청자에게 보낸다.
3. 2의 서류를 일본의 공증기관에서 공증을 받는다.
4. 다시 3의 공증서류를 한글로 번역 후 공증을 받는다.
5. 4의 서류를 한국 소프트웨어 산업협회에 등록 한다.

이처럼 복잡한 철차가 필요하며 여건이 않된다면 대행업체에 맡겨야 하는데 금액 또한 만만치 않습니다. (대행비만 30만원 이상 하는듯 합니다.)
게다가 제가 초기에 다니던 회사는 도산을 해버려 그 회사의 경력은 입증 받을 방법이 없습니다.

처음 일본으로 취업할 수 있었던건 정부의 지원이 있었기 때문입니다. 정말 고마운 일이지요. 하지만 4년간 일본에서 근무한 경력을 한국에선 쉽게 인정해주지 않는군요.
저와 같은 어려움을 갖고 대기업, 정부관련 프로젝트를 하는 기업으로의 취업을 아예 배제하거나 아예 소프트웨어개발자를 포기하는 동료나 선후배를 몇몇 봤습니다.
어떻게 해외취업자의 경우 등록 절차를 완화시켜 준다던가 하는 방법은 없는 것일까요?
연금 납부기록이나 보헙료 납부기록등으로 대체하는 방법은 없을까요?
하다 못해 일본으로 서류가 왔다갔다 하지 않게 하는 방법은 없을까요?

실업대책으로 정부가 많은 노력을 한다는 사실을 알고 있지만 경력이 있는 사람이 재취업하기 힘든 현재 상황은 약간 이해하기 어렵습니다.
답답한 마음에 글을 올립니다. 

지경부 답변 : 2010.09.29. 10:12:02 (18일 정도 소요)
국민과 함께 미래를 준비하는 지식경제부입니다. 

안녕하십니까? 국민신문고를 이용해 주셔서 감사드립니다. 
고객님께서 ‘10년 9월 13일에 우리부에 질의하신 사항에 대하여 다음과 같이 답변 드립니다. 

고객님께서 질의하신 사항은 해외근무경력 인정절차와 관련 한 사항으로 판단됩니다.

한 국가에서 발행한 문서(공문서 또는 공증된 사문서)가 다른 국가에서도 동일한 효력을 발휘하기 위해서는 문서의 국외사용을 위한 확인 절차를 거쳐야 합니다. 이를 위해 세계 각국은 ‘아포스티유 확인 제도’ 또는 ‘주재국 공문서 영사 확인’의 방법으로 확인하고 있습니다.
고객님의 경우도 이에 해당되는 사례로서 SW기술자 경력관리제도를 통해 해외근무경력을 신고하기 위해서는 위 제도를 통한 확인 절차가 필요하며, 이는 비단 SW기술자 경력관리제도 뿐 아니라 정부를 포함한 공공기관에서 ‘해외에서 발행된 문서를 확인’하기 위해서 동 제도를 활용하고 있습니다.

참고로 고객님의 경우, 일본에서의 근무경력을 입증하기 위해서는 근무업체의 확인서를 받아 일본 공증기관의 공증을 받은 후, 반드시 일본의 아포스티유 발급절차를 거시쳐야 합니다. 이러한 절차가 고객님이 느끼시는 것처럼 까다롭고 다소 복잡하게 여겨질 수 있으나, 관련 법령(재외공관공증법 등)과 국제협약(아포스티유 협약)에 의해 진행되는 절차로서 SW기술 해외경력을 신고할 때도 이러한 절차를 생략하거나 간소화하는 것은 원칙적으로 곤란한 사안임을 이해해 주시기 바랍니다.

추가 질문 : 2010.09.29.
친절한 답변은 감사하오나 역시 저의 불편사항은 해결 되지 않는 거군요.
또한 도산해 버린 외국기업의 경력신청은 어떻게 해야 하는걸까요?
당분간 SW기술자 경력신청은 보류해 두어야 겠네요.
감사합니다.

추가 답변: 2010.09.29. 10:12:02 (당일 답변 완료)
고객님께서 질의하신 사항에 대해 만족스런 해결책을 드리지 못하게 됨을 송구스럽게 생각합니다.

해외에서 발행된 문서의 확인을 위한 동 제도는 필요하다고 생각되나,
SW기술자 신고제도 운영에 있어 해외도산기업 근무경력 증명의 어려움 및 아포스티유 발급 시 소요되는 비용의 부담감 등을 완화할 수 있는 방안을 모색하는데 최선을 다하겠습니다.

SW기술자 신고제도가 기술자들의 권익향상에 도움이 되는 제도로 더욱 발전할 수 있도록 고객님의 지속적인 관심과 적극적인 의견을 부탁드리며, 작은 소리도 크게 듣는 지식경제부가 되도록 노력하겠습니다.

감사합니다.

C언어 함수 정리

C 타입 매크로 함수(prototype in ctype.h)

문자 조작 함수(prototype in string.h)
수학용 연산 함수(prototype in math.h)
표준 입출력 함수(prototype in stdio.h)를 분류해서 올렸습니다.
C 타입 매크로 함수(prototype in ctype.h)

함수명 : isalnum
구 분 : int isalnum (int c);
기 능 : 문자 c가 문자이거나 숫자이면, 즉 c가 A-Z, a-z, 0-9 사이이면 0이 아닌 수를, 아니면 0을 반환한다.
함수명 : isalpha
구 분 : int isalpha (int c);
기 능 : 문자 c가 문자이면, 즉 A-Z, a-z, 사이이면 0이 아닌 수를, 아니면 0을 반환한다.
함수명 : isascii
구 분 : int isascii (int c);
기 능 : 문자 c가 0-127 사이면 0이 아닌 수를, 아니면 0을 반환한다.
함수명 : isascii
구 분 : int iscntrl (int c);
기 능 : 문자 c가 delete 문자이거나 일번적인 컨트롤 문자이면 0이 아닌 수를, 아니면 0을 반환한다.
함수명 : isdigit
구 문 : int isdigit (int c);
기 능 : 문자 c가 숫자이면, 즉 0-9 사이이면 0이 아닌 수를, 아니면 0을 반환한다.
함수명 : isgraph
구 문 : int isgraph (int c);
기 능 : c가 공백 문자를 제외한 출력 가능한 문자이면 0이 아닌 수를, 아니면 0을 반환 한다.
함수명 : islower
구 문 : int islower (int c);
기 능 : 문자 c가 소문자이면 0이 아닌 수를, 아니면 0을 반환한다.
함수명 : isprint
구 문 : int isprint (int c);
기 능 : 문자 c가 출력 가능한 문자이면 0이 아닌 수를, 아니면 0을 반환한다.
함수명 : isspace
구 문 : int isspace (int c);
기 능 : 문자 c가 space 문자이면, 즉 space, tab, carriage return, newline, vertical tab, formfeed이면 0이 아닌 수를, 아니면 0을 반환한다.
함수명 : ispunct
구 문 : int ispunct (int c);
기 능 : 문자 c가 punctuation 문자이면 0이 아닌 수를, 아니면 0을 반환한다.
함수명 : isupper
구 문 : int isupper (int c);
기 능 : 문자 c가 대문자이면, 즉 A-Z 사이이면 0이 아닌 수를, 아니면 0을 반환한다.
함수명 : isxdigit
구 문 : int isxdigit(int c);
기 능 : 문자 c가 숫자이면, 즉 0-9 사이이면 0이 아닌 수를, 아니면 0을 반환한다.
함수명 : toascii
구 문 : int toascii (int c);
기 능 : 정수형 수 c를 아스키 문자 c로 변환시켜 준다.
함수명 : tolower
구 문 : int tolower (int c);
기 능 : 문자 c를 소문자로 변환아여 준다.
함수명 : toupper
구 문 : int toupper (int c);
기 능 : 문자 c를 대문자로 변환하여 준다.

문자 조작 함수(prototype in string.h)

함수명 : strcat
구 문 : char * strcat (char *dest, const char *src);
기 능 : dest 문자열의 끝에 src의 문자열을 확장한다. 확장된 문자열의 길이는 dest문자열의 길이와 src 문자열의 길이의 합과 같다. dest 문자열의 포인터를 반환한다.
함수명 : strchr
구 문 : char * strchr (const char *s, int c);
기 능 : 문자열 s에서 문자 c가 나타나는지 검사한다. strchr은 문자열에서 처음으로 해당 하는 문자가 나타나는 곳의 포인터를 반환한다.
함수명 : strcmp
구 문 : int strcmp (const char *s1, const char *s2);
기 능 : 두 문자열 s1과 s2가 같은지를 검사한다. 만약 문자열이 같으면 0을 반환하고, s1이 s2보다 작으면 음수를, 크면 양수를 반환한다.
함수명 : strcpy
구 문 : char * strcpy (char *dest, const char *src);
기 능 : 문자열 str를 문자열 dest로 복사한다. dest의 포인터를 반환한다.
함수명 : strerror
구 문 : char * strerror (int errnum);
기 능 : 정수형으로 쓰여진 에러 번호에 해당하는 에러 메시지 문자열에 대한 포인터를 반환한다.
함수명 : strlen
구 문 : size_t strlen (const char *s);
기 능 : 문자열의 길이, 즉 문자열에 포함된 문자의 개수를 반환한다. strlen은 NULL로 끝나는 문자를 고려하지 않는다.
함수명 : strstr
구 문 : char * strstr (const char *s1, const char *s2);
기 능 : 문자열 s1에서 문자열 s2가 포함되는지를 검사한다. strstr은 문자열 s2가 시작 하는 s1 문자열에서의 포인터를 반환한다.
함수명 : strtok
구 문 : char * strtok(char *s1, const char *s2);
기 능 : strtok는 문자열 s1이 s2에서 정의된 구별자(delimiters)에 의해 0개나 그 이상의 토큰으로 구성되어 있는지를 검사한다.
함수명 : strtol
구 문 : long strtol (char *s, char * * endptr, int radix);
기 능 : strtol은 문자열 s를 long 정수형으로 바꾸어 준다.
함수명 : strupr
구 문 : char * strupr (char *s);
기 능 : strupr는 문자열 s에 포함된 모든 소문자를 대문자로 바꾸어 준다.

수학용 연산 함수(prototype in math.h)

함수명 : abs
구 문 : int abs(int x);
기 능 : 정수 x의 절대갑을 반환한다.
함수명 : acos
구 문 : double acos (double x);
기 능 : 수 x의 arc cosine 값을 계산하여 반환한다.
함수명 : asin
구 문 : double asin (double x);
기 능 : 수 x의 arc sine 값을 계산하여 반환한다.
함수명 : atan
구 문 : double atan (double x);
기 능 : 수 x의 arc tangent 값을 계산하여 반환한다.
함수명 : atan2
구 문 : double atan2 (double y, double x);
기 능 : 수 y/x의 arc tangent 값을 계산하여 반환한다.
함수명 : atof
구 문 : double atof (const char *s);
기 능 : 문자열 s를 부동 소수점 수로 변환하여 반환한다.
함수명 : atoi
구 문 : int atoi (const char *s);
기 능 : 문자열 s를 정수로 변환하여 반환한다.
함수명 : atol
구 문 : long atoll (const char *s);
기 능 : 문자열 s를 정수로 변환하여 반환한다.
함수명 : ceil
구 문 : double ceil (double x);
기 능 : 실수 x보다 큰 정수 중 최소의 정수를 반환한다.
함수명 : cos
구 문 : double cos (double x);
기 능 : 실수 x의 cosine 값을 계산하여 반환한다.
함수명 : cosh
구 문 : double cosh (double x);
기 능 : 실수 x의 hyperbolic cosine 값을 계산하여 반환한다.
함수명 : exp
구 문 : double exp(double x);
기 능 : ex를 계산하여 반환한다.
함수명 : fabs
구 문 : double fabs (double x);
기 능 : 부동 소수점 수 x의 절대값을 계산하여 반환한다.
함수명 : floor
구 문 : double floor (double x);
기 능 : 부동 소수점 수 x보다 작은 정수중 최대값을 반환한다.
함수명 : fmod
구 문 : double fmod (double x, double y);
기 능 : x/y의 나머지를 계산하여 반환한다.
함수명 : labs
구 문 : long labs (long x);
기 능 : long 정수 x의 절대값을 계산하여 반환한다.
함수명 : ldexp
구 문 : double ldexp (double x, int exponent);
기 능 : x ´ 2exp를 계산하여 반환한다.
함수명 : log
구 문 : double log (double x);
기 능 : x의 자연 대수갑 ln(x)를 계산하여 반환한다.
함수명 : log10
구 문 : double log10 (double x);
기 능 : x의 십진 대수값 log10(x)를 계산하여 반환한다.
함수명 : modf
구 문 : double modf (double x, double *ipart);
기 능 : 실수 x를 정수 부분과 소수점 아래 부분으로 나눈다. 정수 부분은 ipart에 저장 하고, 소수점 아래 부분은 반환한다.
함수명 : pow
구 문 : double pow (double x, double y);
기 능 : xy를 계산하여 반환한다.
함수명 : pow10
구 문 : double pow10 (int p);
기 능 : 10p를 계산하여 반환한다.
함수명 : sin
구 문 : double sin (double x);
기 능 : 수 x의 sine 값을 계산하여 반환한다.
함수명 : sinh
구 문 : double sinh (double x);
기 능 : 수 x의 hyperbolic sine 값을 계산하여 반환한다.
함수명 : sqrt
구 문 : double sqrt (double x);
기 능 : 수 x의 양의 제곱근을 계산하여 반환한다.
함수명 : tan
구 문 : double tan (double x);
기 능 : 수 x의 tangent 값을 계산하여 반환한다.
함수명 : tanh
구 문 : double tanh (double x);
기 능 : 수 x의 hyperbolic tangent 값을 계산하여 반환한다.
함수명 : hypot
구 문 : double hypot (double x, double y);
기 능 : hypot은 z2=x2+y2을 만족하는 z값 중에서 양수인 z의 값을 계산하여 반환한다.

표준 입출력 함수(prototype in stdio.h)

함수명 : fclose
구 분 : int fclose (FILE *stream);
기 능 : stream에 지정된 파일 스트림을 닫는다. 성공하면 0을 반환하고, 실패하면 EOF를 반환한다.
함수명 : fcloseall
구 분 : int fcloseall (void);
기 능 : 열려진 모든 스트림을 닫는다. 이때, 표준 입출력 스트림인 stdin, stdout, stdprn, stderr, staux는 제외된다. fcloseall 함수의 실행이 성공하면 닫혀진 스트림들의 총 개수를 반환하고, 만약 오류가 발생하면 EOF를 반환한다.
함수명 : fdopen
구 분 : FILE *fdopen (int handle, char *type);
기 능 : 함수 creat, dup, dup2, open의 수행 결과 얻어진 파일 핸들과 스트림을 연결 시켜 준다.

함수명 : fgetc
구 분 : int fgetc (FILE *stream);
기 능 : 명명된 파일 스트림으로부터 하나의 문자를 읽어 들인다. 성공한 경우 읽어 들인 문자를 정수로 변환하여 반환하고, 파일 스트림의 끝에 도달했거나 오류가 발생했을 때는 EOF를 반환한다.
함수명 : fgetchar
구 분 : int fgetchar (void);
기 능 : 표준 입력 스트림으로부터 하나의 문자를 읽어 들인다. 성공한 경우는 읽어 들인 문자를 정수형으로 바꾸어 반환하고, 파일의 끝에 도달했거나 오류가 발생했을 때는 EOF을 반환한다.
함수명 : fgetpos
구 분 : int fgetpos (FILE *stream, fops_t *pos);
기 능 : 주어진 파일 스트림과 관련된 파일 포인터의 현재 위치를 pos라는 포인터가 가리키는 곳에 저장한다. fops_t라는 형은 stdio.h에 다음과 같이 정의 되어 있다.
typedef long fops_t;
성공한 경우에는 0을 반환하고, 실패한 경우에는 0 이외의 정수값을 반환하고 errno를 EBADF 또는 EINVAL로 설정시킨다.
함수명 : fgets
구 분 : char *fgets (char *s, int n, FILE *stream);
기 능 : stream으로 명명된 파일 스트림으로부터 문자열을 읽어 들여 스트링 변수 s에 저장한다. 읽어 들이는 문자열의 길이는 n-1이며, 중간에 개행 문자인 ‘\n’이 있으면 읽기를 멈춘다. 함수 fgets는 성공하면 포인터 s의 값을 반환하고, 파일의 끝에 도달하거나 오류가 생기는 경우는 NULL을 반환한다.
함수명 : fopen
구 분 : FILE *fopen (const char *path, const char *mode);
기 능 : path에 지정된 경로에 의해 명명된 파일을 열어 파일 스트림에 연결 시킨다.
fopen 생성된 파일 스트림에 대한 포인터를 반환한다.
함수명 : fprintf
구 분 : int fprintf (FILE *stream, const char *format [,arg1, arg2,...]);
기 능 : format에 지정된 출력 형식을 stream으로 명명된 파일에 출력한다. format에 지정된 서식 지정자에 따라 arg1, arg2 등의 자료를 출력할 수도 있다. 함수 fprintf는 성공한 경우에는 출력된 바이트의 개수를 반환하고, 오류가 발생한 경우에는 EOF를 반환한다.
함수명 : fputc
구 분 : int fputc (int c, FILE *stream);
기 능 : 문자 c를 stream 으로 명명된 파일 스트림에 출력한다. 성공한 경우에는 문자 c를 반환하고 , 실패한 경우에는 EOF를 반환한다.
함수명 : fputchar
구 분 : int fputchar (int c);
기 능 : 문자 c를 표준 출력 장치인 stdout으로 출력한다. fputchar(c)는 fputc(c, stdout)으로 정의되어 있다. 성공한 경우에는 문자 c를 반환하고, 실패한 경우에느 EOF을 반환한다.
함수명 : fputs
구 분 : int fputs (const char *s, FILE *stream);
기 능 : 문자열 s를 stream으로 명명된 파일 스트림에 출력한다. 개행 문자를 출력하지는 않으므로 커서가 다음 라인으로 이동하지는 않는다 fputs는 성공하면 출력한 최후의 문자를 반환하고, 실패한 경우에는 EOF을 반환한다.

함수명 : fread
구 분 : size_t fread (void *ptr, size_t,size, size_t n, FILE *stream);
기 능 : 주어진 입력 스트림으로부터 n개의 자료를 읽어 포인터 ptr이 가리키는 블록에 저장한다. 이때 각각의 자료의 크기는 size 바이트이다. 함수 fread의 수행이 성공하면 읽어 들인 자료의 개수를 반환하고, 파일의 끝이거나 오류가 발생하면 0을 반환한다.

함수명 : freopen
구 분 : FILE *freopen (const char *path, const char *mode, FILE *stream);
기 능 : 파일 포인터 stream이 가리키는 파일을 닫고, 대신 path에 명명된 파일을 열어 파일 포인터 stream에 연결시킨다. 이때 mode는 fopen이나 freopen 함수에서 사용한 것과 동일한 방법으로 사용하면 된다. freopen은 성공한 경우 파일 포인터인 stream을 반환하고, 실패하면 NULL을 반환한다.

함수명 : fscanf
구 분 : int fscanf (FILE *stream, const char *format [,address, ...]);
기 능 : 서식 지정 문자열인 format에 명시된 형태로 입력을 읽어 들인다. 서식 지정 문자열 format에 대한 설명은 scanf 함수를 참조하면 된다. fscanf는 성공하면 읽어 들인 자료의 입력 필드 수를 반환한다. 만약 파일의 끝에 도달하면 EOF을 반환하고, 입력이 없으면 0을 반환한다.
함수명 : fseek
구 분 : int fseek (FILE *stream, long offset, int whence);
기 능 : 파일 스트림에서 파일 포인터의 위치를 변경 시킨다, 현재 파일 포인터 stream이 가리키는 파일에서 whence의 위치로부터 offset 바이트 만큼 떨어진 위치로 파일 포인터를 옮긴다. 텍스트 모드 파일 스트림에서 offset은 0또는 ftell 함수에 의해 반환된 값이어야 한다.
함수명 : fsetpos
구 분 : int fsetpos (FILE *stream, const fops_t *pos);
기 능 : 파일 포인터 stream을 새로운 위치로 설정시킨다. 새로운 위치 pos는 이전에 실행된 fgetpos 함수에 의해 반환된 값을 사용한다. fsetpos는 성공한 경우에 0을 반환한다. 실패한 경우에는 0 이외의 정수를 반환하고, errno를 0 이외의 값으로 설정한다.
함수명 : ftell
구 분 : long ftell (FILE *stream);
기 능 : 파일 포인터의 현재 값을 반환한다. 오프셋은 파일의 시작점으로부터 바이트 단위로 측정된다. ftell이 반환한 값은 fseek 함수에 의해 사용된다. ftell은 성공한 경우 파일 포인터의 현재 값을 반환한다.
함수명 : fwrite
구 분 : size_t fwrite (const void *ptr, size_t size, size_t n, FILE *stream);
기 능 : n개의 자료를 주어진 출력 파일에 덧붙여 쓴다. 이 때, 각각의 자료의 크기는 size 바이트며, ptr은 쓰여질 자료의 시작 위치를 가리키는 포인터이다.
함수명 : getc
구 분 : int getc (FILE *stream)
기 능 : 파일 포인터 stream 이 가리키는 파일로부터 하나의 문자를 읽어 반한하고, 파일 포인터를 다음 문자로 이동시킨다. getc는 성공한 경우에는 읽어 들인 문자를 정수형으로 변환시켜 반환하며, 오류가 발생하거나 파일의 끝에 도달하면 EOF을 반환한다.
함수명 : getchar
구 분 : int getchar (void)
기 능 : getc(stdin)으로 정으되어 있으며, 표준 입력으로부터 하나의 문자를 읽어들여 정수로 변환하여 반환한다.
함수명 : gets
구 분 : char *gets (char *s);
기 능 : 표준 입력 stdin으로부터 문자열을 읽어 들인다. 개행문자(’\n’)는 문자열의 끝을 나타내는 ‘\0’으로 입력된다. 성공한 경우에는 s를 반환하고, 오류가 발생한 경우에는 EOF인 경우에는 NULL을 반환한다.
함수명 : getw
구 분 : int getw (FILE *stream);
기 능 : 파일 포인터 stream이 가리키는 파일로부터 정수를 읽어 들인다. getw는 텍스트 모드로 열려진 파일에는 사용할 수 없다. 성공한 경우에는 읽혀진 정수를 반환하고, 오류가 발생한 경우에는 EOF을 반환한다.
함수명 : perror
구 분 : void perror (const char *s);
기 능 : stderr스트림으로 시스템 오류 메시지를 출력한다.
함수명 : printf
구 분 : int printf (const char *format [,argument, ...]);
기 능 : 서식 지정 문자열인 format의 형태에 따라 표준 출력 스트림 stout에 문자열을 출력한다. 이 때, 서식 지정자에 따라 자료를 출력할 수 있다. format 문자열 내에 존제하는 서식 지정자의 수와 출력할 자료의 수는 같아야 한다. 서식 지정 문자열 format은 아래와 같은 두 종류의 문자들로 이루어 진다.
- 일반 문자 : 출력 스트림에 그대로 출력되는 문자
- 서식 지정자 : 인자 리스트에 존재하는 인자들 중 해당하는 인자의 서식을 지정 한다.
함수명 : putc
구 분 : int putc (int c, FILE *stream);
기 능 : 파일 포인터 stream이 가리키는 파일에 하나의 문자 c를 출력한다. putc는 성공하는 경우는 출력된 문자를 반환하고, 실패한 경우는 EOF을 반환한다.
함수명 : putchar
구 분 : int utchar (int c);
기 능 : putchar(c)는 putc(c, stdout)으로 정의되어 있으며, 표준 입력 스트림 stdout으로 부터 하나의 문자 c를 출력한다. 성공한 경우는 출력된 문자를 반환하고, 실패한 경우는 EOF을 반환한다.
함수명 : puts
구 분 : int puts (const char *s);
기 능 : puts함수는 출력할 문자열 s에 개행 문자 ‘\n’를 붙여 출력한다. 그러므러 문자열 s를 출력후 커서가 한 라인 아래의 왼쪽으로 이동한다. 성공하면 0 또는 양의 정수를 반환하고, 실패하면 EOF을 반환한다.
함수명 : putw
구 분 : int putw (int w, FILE *stream);
기 능 : 파일 포인터 steram이 가리키는 파일에 정수 w를 출력한다. putw는 성공하는 경우에는 정수 w를 반환하고, 실패하는 경우에는 EOF을 반환한다.
함수명 : rename
구 분 : int rename (const char *oldname, const char *newname);
기 능 : oldname 이라고 명명된 파일의 이름을 newname으로 변경시킨다. old name에 지정된 디렉토리와 newname에 지정된 디렉토리는 달라도 된다. 두 개의 디렉토리가 다른 경우에는 파일을 다른 디렉토리로 옮기는 역할을 한다. 성공적으로 파일 이름 을 변경시킨 경우에는 0을 반환한다. 오류가 생긴 경우에는 -1을 반환하고, errno를 아래의 상수들 중의 하나로 설정한다.
ENOENT 파일이나 디렉토리가 존재하지 않는 경우
EACCES 이름 변경이 허용되지 않는 경우
ENOTSAM 동일한 디바이스가 아닐 경우
함수명 : rewind
구 분 : void rewind (FILE *stream);
기 능 : 파일 포인터를 스트림의 시작점으로 이동시킨다. rewind(stream)는
feek(stream,0L)와 같은 의미이다.
함수명 : scanf
구 분 : int scanf (const char *format [, address...]);
기 능 : 표준 입력 스트림 stdin으로부터 자료를 읽어 들인다. 이때 서식 지정문자열 format에 지정된 형식에 따라 자료를 읽어 들인다.
함수명 : setbuf
구 분 : void setbuf (FILE *stream, char *buf);
기 능 : 입출력 버퍼 사용시 자동적으로 할당되는 버퍼를 할당하는 대신에 buf라는 특정한 버퍼를 지정하여 사용한다. 반드시 파일 포인터 stream에 파일이 할당된 후 buf 를 사용하여야 한다.
함수명 : setvbuf
구 분 : int setvbuf (FILE *stream, char *buf, int type, size_t size);
기 능 : 입출력 버퍼 사용시 자동적으로 할당하는 버퍼를 할당하는 대신에 buf라는 특정한 버퍼를 지정하여 사용한다. 반드시 파일 포인터 stream에 파일이 할당된 후 buf를 사용하여야 한다. size는 버퍼의 크기로서 0보다는 크거나 같고, 32767보다는 작아야 한다.
함수명 : sprintf
구 분 : int sprintf (char *buffer, const char *format [, argument, ...]);
기 능 : argument들을 서식 지정 문자열 format에 지정된 형식에 따라 buffer라는 문자열로 출력한다. 성공하면 출력된 바이트 수를 반환하고, 실패하면 EOF을 반환한다.
함수명 : sscanf
구 분 : int sscanf (const char *buffer, const char *format [, address, ...]);
기 능 : buffer라는 문자열로부터 자료를 입력 받아 서식 지정 문자열 format에 지정된 형식에 따라 변환하여 그 값을 인자로 쓰인 address에 저장한다. scanf의 수행이 성공하면 입력된 필드의 수를 반환하며, 만약 파일의 끝에 도달하면 EOF을 반환한다.
함수명 : strerror
구 분 : char *strerror (int errnum);
기 능 : errnum과 관련된 오류 메시지 문자열을 가리키는 포인터를 반환한다.
함수명 : tmpfile
구 분 : FILE *tmpfile (void);
기 능 : 임시 파일을 이진 모드로 열고, 수정을 위해 (w+b) 모드로 한다. tmpfile에 의해 생성된 파일은 프로그램이 종결되거나, 파일을 닫기 위한 함수 fclode를 사용하면 자동으로 제거된다.
함수명 : tmpnam
구 분 : char *tmpnam (char *s);
기 능 : 파일 이름을 생성하여 임시 파일의 이름으로 사용한다.
함수명 : ungetc
구 분 : int ungetc (int c, FILE *stream);
기 능 : 문자 c를 stream으로 명명된 입력 스트림에 되돌려 놓는다. 이 때, stream은 반드시 열려진 상태여야 한다. getc나 fread함수가 호출되어 stream에서 하나의 문자를 읽으면 ungetc에 의해 되돌려진 문자가 읽혀지게 된다. ungetc가 성공하면 스트림으로 되돌여진 문자를 반환하고, 실패하면 EOF을 반환한다.
함수명 : unlink
구 분 : int unlink (const char *path);
기 능 : path에 지정된 파일을 삭제한다. 어떠한 DOS 드라이브나 경로, 파일명도 path에 사용될 수 있다. 단 와일드 카드의 사용은 허용되지 않는다. 읽기 전용 파일은 unlink 함수를 사용하여 삭제할 수 없으며, unlink로 삭제하려면 chmod나 _chmod 함수를 사용하여 읽기 전용(read only) 속성을 다른 것으로 바꾸어야 한다. unlink함수의 수행이 성공하면 0을 반환한다. 만약 오류가 발생한 경우에는 -1을 반환하고 errno를 다음의 값들 중 하나로 설정한다.
함수명 : vfprintf
구 분 : int vfprintf (FILE *stream, const char *format, va_list arglist);
기 능 : v...printf 형태의 함수들은 ...printf 형태의 함수와 같은 기능을 한다.
vfprintf함수가 printf함수와 다른 점은, fprintf 함수는 인자 리스트를 받아서 출력하고,
vprintf함수는 인자 리스트에 대한 포인터를 받아서 출력한다는 점이 다르다.
함수명 : vfscanf
구 분 : int vfscanf (FILE *stream, const char *format, va_list arglist);
기 능 : v...scanf형태의 함수들은 ...scanf형태의 함수와 같은 기능을 한다. vfscanf함수가 fscanf 함수와 다른 점은, fscanf함수는 인자 리스트를 입력 받고, vfscanf 함수는 인자 리스트에 대한 포인터를 입력 받는다는 점이 다르다.
함수명 : vprintf
구 분 : int vprintf (const char *format, va_list arglist);
기 능 : vprintf함수는 printf함수와 같은 기능을 한다. vprintf 함수가 printf함수와 다른 점은, scanf 함수는 인자 인자 리스트를 입력 받고, vscanf 함수는 인자 리스트에 대한 포인터를 입력 받는다는 점이 다르다.
함수명 : vscanf
구 분 : int vscanf (const *format, va_list arglist);
기 능 : vscanf 함수는 scanf 함수와 같은 기능을 한다. vscanf 함수가 scanf 함수와 다은점은, scanf 함수는 인자 리스트를 입력 받고, vscanf 함수는 인자 리스트에 대한 포인터를 입력 받는다는 점이 다르다.
함수명 : vsprintf
구 분 : int vsprintf (char *buffer, const char *format, va_list arglist);
기 능 : vsprintf 함수는 인자 리스트에 대한 포인터를 받아서 서식 지정 문자열 format에 지정된 형식에 맞추어 buffer라는 문자열로 출력된다.
함수명 : vsscanf
구 분 : int vsscanf (const char *buffer, const char *format, va_list arglist);
기 능 : vsscanf함수는 자료를 입력 받아서 서식 지정 문자열 format에 지정된 형식에 따라 변환하여 인자 리스트에 존재하는 address에 저장한다.

// 출처 : http://sarim.changwon.ac.kr/~chobh/c_lan/function.htm
근데 링크가 사라졌더라구요.
원작자님 감사 ㅠㅜ