FileTimeModify

Posted at 2010/02/13 20:46 // in Programming // by 엔신
사용자 삽입 이미지

윈도우에서 파일의 만든날짜, 수정한 날짜, 액세스한 날짜를 원하는 날짜로 수정함.

DayOfWeek는 입력하지 않아도 Day에 따라서 자동으로 변동됨.

VS 2008 SP1에서 만듬.

근데 왜 만들었지?

GetFileTime, SetFileTime, FileTimeToSystemTime, SystemTimeToFileTime

[실행파일]

[Source 파일]
이올린에 북마크하기
2010/02/13 20:46 2010/02/13 20:46

엑셀 사용자 지정 서식

Posted at 2010/01/21 15:07 // in Programming // by 엔신
#,###;[빨강](#,###);0.00;@"낭자"
양수;음수;0;텍스트

세미콜론으로 동시에 4가지 표시 형식을 지정 가능


서식코드 의미
# 유효 자리수 표시, 유효하지 않은 경우 미표시
0 유효하지 않은 경우 0으로 표시
? 소수점 앞이나 뒤에 있는 유효하지 않은 0 대신 공백을 추가하여 소수점을 맞춤
, 천단위 구분기호
[] 조건이나 색을 지정
m m:1~12, mm:01~12 월 의미
mmm은 Jan에서 Dec, mmmm은 January~December로 월 표시
d d:1~31, dd:01~31
mmm은 Sun~Sat, dddd는 Sunday~Saturday로 요일 표시
yy yy는 2자리로, yyyy는 4자리 연도 표시


이올린에 북마크하기
2010/01/21 15:07 2010/01/21 15:07

COleDateTime 클래스

Posted at 2009/11/23 00:21 // in Programming // by 엔신
----------------------------------------------------------------------------------------
COleDateTime now = COleDateTime::GetCurrentTime();
int a = now.GetMinute();
현재 시각이 1:27분이라면 27 정수를 리턴한다.

60초 체크하기
dwTimeStart = ::GetTickCount();    
dwTimeEnd   = dwTimeStart + 60000;  // 60초마다 체크

while (::GetTickCount() < dwTimeEnd)
{
    if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
    {
        ::TranslateMessage(&msg);
        ::DispatchMessage(&msg);
    }

    Sleep(1);
}
----------------------------------------------------------------------------------------
COleDateTime    now;
        now    = COleDateTime::GetTickCount();
        CString    strFileName;
        strFileName.Format(_T("HashLog_%04d%02d%02d_%02d%02d%02d.txt"), now.GetYear(), now.GetMonth(),
            now.GetDay(), now.GetHour(), now.GetMinute(), now.GetSecond());
----------------------------------------------------------------------------------------

이런 식으로 사용이 가능함
ATL/MFC에서 사용 주로 사용하는 시간 클래스
그런데 GetCurrentTIme쓰면 댄다는데 왜 VS2008에서 객체에서 ::했는데 안나오길래 GetTickCount() 사용했었는데...

그리고 두 COleDateTime 객체간의 차이를 구할 때는

----------------------------------------------------------------------------------------
COleDateTime ATime(2007, 4, 26, 17, 20, 30);
COleDateTime BTime(2007, 4, 26, 18, 20, 50);

COleDateTimeSpan C = BTime - ATime;

C.GetTotalDays() - 차이나는 총 날짜
C.GetTotalHours() - 차이나는 총 시간
C.GetTotalMinutes() - 차이나는 총 분
C.GetTotalSeconds() - 차이나는 총 초
----------------------------------------------------------------------------------------

객채를 생성할 때에는 아래와 같이 초기화하면서 사용 가능함
가장 일반적으로는 COleDateTime( nYear, nMonth, nDay, nHour, nMin, nSec ) 이게 많이 쓰이겠지..

----------------------------------------------------------------------------------------
COleDateTime( )   Constructs a COleDateTime object initialized to 0 (midnight, 30 December 1899).
COleDateTime( dateSrc )   Constructs a COleDateTime object from an existing COleDateTime object.
COleDateTime( varSrc )   Constructs a COleDateTime object. Attempts to convert a VARIANT structure or COleVariant object to a date/time (VT_DATE) value. If this conversion is successful, the converted value is copied into the new COleDateTime object. If it is not, the value of the COleDateTime object is set to 0 (midnight, 30 December 1899) and its status to invalid.
COleDateTime( dtSrc )   Constructs a COleDateTime object from a DATE value.
COleDateTime( timeSrc )   Constructs a COleDateTime object from a time_t value.
COleDateTime( systimeSrc )   Constructs a COleDateTime object from a SYSTEMTIME value.
COleDateTime( filetimeSrc )   Constructs a COleDateTime object from a FILETIME value. . Note that FILETIME uses Universal Coordinated Time (UTC), so if you pass a local time in the structure, your results will be incorrect. See File Times in the Platform SDK for more information.
COleDateTime( nYear, nMonth, nDay, nHour, nMin, nSec )   Constructs a COleDateTime object from the specified numerical values.
COleDateTime( wDosDate, wDosTime )   Constructs a COleDateTime object from the specified MS-DOS date and time values.
----------------------------------------------------------------------------------------

%a     Abbreviated weekday name
%A     Full weekday name
%b     Abbreviated month name
%B     Full month name
%c     Date and time representation appropriate for locale
%d     Day of month as decimal number (01 – 31)
%H     Hour in 24-hour format (00 – 23)
%I      Hour in 12-hour format (01 – 12)
%j      Day of year as decimal number (001 – 366)
%m    Month as decimal number (01 – 12)
%M   Minute as decimal number (00 – 59)
%p    Current locale's A.M./P.M. indicator for 12-hour clock
%S    Second as decimal number (00 – 59)
%U    Week of year as decimal number, with Sunday as first day of week (00 – 53)
%w   Weekday as decimal number (0 – 6; Sunday is 0)
%W   Week of year as decimal number, with Monday as first day of week (00 – 53)
%x    Date representation for current locale
%X    Time representation for current locale
%y    Year without century, as decimal number (00 – 99)
%Y   Year with century, as decimal number
%z, %Z  Either the time-zone name or time zone abbreviation, depending on registry settings; no characters if time zone is unknown
%%   Percent sign
----------------------------------------------------------------------------------------

라고 http://kgpark.net/tools/19 에 나와있었음...
클래스 멤버 변수는 아래 링크 참조
http://msdn.microsoft.com/en-us/library/by5d3kb1%28VS.80%29.aspx

이올린에 북마크하기
2009/11/23 00:21 2009/11/23 00:21

Tomcat 5.5.27 설치

Posted at 2009/05/28 17:37 // in Programming // by 엔신
서블릿과 JSP를 다루기 위해 웹서버인 Tomcat을 설치하여야 한다.
윈도우 기준으로 설명한다.

1. 다운로드
톰캣 사이트에서 Tomcat 5.5.27을 다운로드 받을수 있다.
톰캣을 설치하기 위해서는 JRE 또는 JDK가 설치되어 있어야 한다.
설치형이 아니므로 C드라이브에 압축을 풀고 경로명을 간단하게 줄인다.
C:\apache-tomcat 이라거나 C:\tomcat 이라거나...

2. 서블릿파일 복사하기
C:\apache-tomcat\common\lib\servlet-api.jar
위경로의 파일을 파일을 복사하여
C:\Java\jdk1.6.0_13\lib
경로에 붙여넣기

3. 시스템 환경 변수 등록
그리고 시스템 환경변수 설정

변수이름 : CATALINA_HOME
변수 값 : C:\apache-tomcat

변수이름 : JAVA_HOME
변수 값 : C:\Java\jdk1.6.0_13

변수이름 : CLASSPATH
변수 값 : C:\apache-tomcat\common\lib\jsp-api.jar
를 등록하거나 js-api.jar 파일을 C:\Java\jdk1.6.0_13\lib\servlet-api.jar 경로에 복사하여 경로를 설정.

본인의 경우 JDK 경로가 C:\Java\jdk1.6.0_13이다. 이렇게 3개의 환경변수를 등록하면 된다.

4. 톰캣 서버 포트 변경
C:\apache-tomcat\conf\server.xml
파일을 수정한다.
    <Connector port="8080" maxHttpHeaderSize="8192"
파일 내용에서 port 8080으로 된 것을 8090으로 변경
8080의 경우 프록시나 오라클과 충돌이 날 수 있다.

5.서브 디렉토리 생성하기
기본 디렉토리 파일 복사하여 서브디렉토리 생성하기
C:\apache-tomcat\webapps\jsp-examples\WEB-INF에서
classes - 폴더
lib - 폴더
web.xml
를 복사하여
C:\apache-tomcat\webapps\test007\WEB-INF
경로에다가 붙여넣기 한다.

web.xml 파일의 내용을 아래 내용만 남겨놓는다
<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

</web-app>
test007/ 경로에 index.html 파일을 만들고
웹브라우저로 http://127.1.1.1:8090/test007/index.html 경로로 접속하여 본다.

6. 다른 시스템 디렉토리를 서브 디렉토리로 사용하기(1)
C:\apache-tomcat\conf\web.xml
파일에서 아래 두 내용에서 invoker가 주석 처리 되어 있는데 그 주석을 제거한다
    <servlet>
        <servlet-name>invoker</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.InvokerServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>
이 곳과 아래 내용
    <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>

C:\apache-tomcat\conf\Catalina\localhost\test008.xml
파일을 생성하고 내용을 넣는다.
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="C:\test008"
         privileged="true" antiResourceLocking="false" antiJARLocking="false">
</Context>
위와 같이하고 xml 설정 파일을 reload하기 위해 톰캣을 재시작한다.
이렇게 하면 이제 웹에서는
http://127.1.1.1:8090/test008/index.html
와 같은 경로로 하위 폴더 접근이 가능해진다.

6. 다른 시스템 디렉토리를 서브 디렉토리로 사용하기(2)
위와 같은 서브디렉토리를 만드는 결과는 같지만, 방법만 다르다.

C:\apache-tomcat\conf\server.xml
파일에서
</host 로 검색하여 그 문장 바로 위에
<Context path="/test008" docBase="D:\test008"/>
를 삽입한다.
톰캣을 재시작하면 정상적으로 서브디렉토리 사용이 가능해진다.


이올린에 북마크하기
2009/05/28 17:37 2009/05/28 17:37

strcpy()와 memcpy()

Posted at 2008/08/20 16:27 // in Programming // by 엔신

strcpy 는 문자열 복사를 위한 함수로서
길이를 지정안하는 대신 source 문자열이 반드시 '\0' 으로 끝나야합니다.
source 에서 '\0'을 만나면 복사를 종료합니다
('\0' 까지 복사됩니다)

이에 반하여 memcpy는 형에 관계없이 임의의 영역을 지정한 byte 수만큼 복사하는
기능을 수행합니다

char dstS[64], srcS[]="string copy";

여기서 srcS를 dstS로 복사하려면

strcpy 로는

strcpy(dstS, srcS);

이렇게만 하면 되지만

memcpy로 복사하려면

memcpy(dstS, srcS, strlen(srcS)+1);

'\0' 까지 처리하기위해 복사할 size를 strlen(srcS)+1 로 지정해 줘야합니다

둘다 메모리 복사란 점에서는 같은 역할을 하지만
문자값을 비교하여 종료하느냐, byte 수를 따져 종료하느냐의 차이가 있습니다
용도가 틀리다고 말할 수는 있어도 어떤것이 더 효율적이다라고는 말하기 어렵습니다
memcpy쓸곳에는 memcpy를 쓰고 strcpy를 쓸 곳에는 strcpy를 쓰면 되느거지요


-------------------------------------------------------------------


속도의 차이는 통상 컴파일러 종류와 운영체제에 따라서 가변사항이
있을것으로 생각됩니다.

요즘은 컴파일러가 좋아지고 님께서 구현하실때 이렇게 한다면
실질적인 의미가 없습니다.

strcpy( test_buff , test_buff_2 );

memcpy( test_buff , test_buff_2 , strlen(test_buff_2) );


그런데, 프로그램이라는 것은 언제나 실수를 할 수 있으며
속도와 안정성( 예외처리 )의 갈림길에 서게 됩니다.

가정을 하여 보시기 바랍니다.

1. test_buff_2 에 , 만약 널 문자 종료가 않생길수 있다면 ?
2. test_buff_2 보다 test_buff 가 작다면 ?

이렇게 된다는 가정이 발생한다면 않되겠지만 수많은 코드를 작성할때는
반드시 발생할 수 있으며, 이러한 문제들은 쉽게 디버깅 되지 않거나
예기치 않은 문제를 가져옵니다.

결과적으로 , 비용적으로 만약 strcpy 가 더 빠르다고 하더라도 ,
memcpy 을 추천합니다. 게다가 가정된 오류를 검사하는 루틴을 포함한다고
하더라도 , 그 효율성의 문제는 크게 발생하지 않습니다.

이올린에 북마크하기
2008/08/20 16:27 2008/08/20 16:27

널 포인터(NULL Pointer)

Posted at 2008/08/16 18:57 // in Programming // by 엔신
널 포인터와 널 문자의 차이를 혼동해서는 안된다. 정수 0, 널 포인터(NULL), 널 문자(\0) 모두 실제로는 0의 값을 가지지만 형이 다르다는 것을 명심하자. 0은 정수형이며 널 포인터는 void * 형. 널 문자는 char 형이므로 반드시 적합한 곳에 사용해야만 한다.
이올린에 북마크하기
2008/08/16 18:57 2008/08/16 18:57

time.h 시간 2

Posted at 2008/08/12 00:46 // in Programming // by 엔신

함수_날짜관련함수.c

/*
 함수 : 날짜 관련 함수. -> <time.h> (time, localtime, asctime, tm).


 2005년 11월 07일
 Son Byeong Hun
 
cidsang@naver.com
*/


#include <stdio.h>
#include <time.h>

void main(void)
{
 time_t time1;   //time_t형 변수 time1 선언
 struct tm * time2; //tm구조체 time2 선언
 char *str;
 int nowYear, nowMonth, nowDay, nowHour, nowMin, nowSec;


 time(&time1);   //time함수를 이용해 현재 시간을 가져온다.
 time2 = localtime(&time1); //tm 구조체를 이용해 시간을 표현하기 위해 localtime 함수를 사용.
 str = ctime(&time1);

 printf("현재 시간 : %s\n", asctime(time2));
 printf("현재 시간 : %s\n", str);


 // 현재 Date 정보 처리
 nowYear = time2->tm_year+1900; //구한 Date 정보를 변수에 할당
 nowMonth = time2->tm_mon+1;
 nowDay = time2->tm_mday;
 nowHour = time2->tm_hour;
 nowMin = time2->tm_min;
 nowSec = time2->tm_sec;

 printf("현재는 %d년 %d월 %d일 %d시 %d분 %d초 입니다. \n", nowYear, nowMonth, nowDay, nowHour, nowMin, nowSec);
}

 



함수_날짜관련함수.c
이올린에 북마크하기
2008/08/12 00:46 2008/08/12 00:46

time.h 시간

Posted at 2008/08/11 23:43 // in Programming // by 엔신

그리고 시간을 나타내는 함수는 보통 time.h 헤더파일에 거의 들어있습니다.


time_t time(time_t *timer);
char *ctime(const time_t *timer);

time_t형은 운영체제마다 타입이 다르며 윈도우의 경우 4바이트 정수로 표현하고
time_t형 포인터를 인수로 받아 조사된 시간을 리턴합니다.

time 함수는 1970년 1월 1일 자정이후 경과된 초를 조사합니다. (세계표준시)
ctime 함수는 time함수의 경과초를 문자열로 출력하며 지역설정에 맞게 시간을 조절할 수 있죠
출력시  개행문자를 자동으로 끝에 삽입합니다.


위 두 함수는 시간을 출력해주되 영어로 저장되고 출력후 알아서 줄바꿈을 하기때문에 조금 애용하기엔 불편합니다.


char *_strdate(char *datestr);
char *_strtime(char *timestr);

_strdate 함수는 MM/DD/YY 포맷으로 날짜를 구하여 datestr 버퍼에 복사한다.
_strtime 함수는 HH:MM:SS 포맷으로 구해서 timestr 버퍼에 복사한다.

24시간제로 시간을 나타내며 버퍼는 널문자까지 고려하여 9바이트 이상이어야 한다.
(문자열 배열)

YY는 연도, MM은 월, DD는 일

HH 는 시간 MM은 분 SS는 초 단위입니다.

9바이트이상의 문자열 배열 예) char t[9] 이상되는 배열에 함수를 사용하시면 해당시간을 입력시켜주죠


struct tm *gmtime(const time_t *timer);
struct tm *localtime(const time_t *timer);
time_t mktime(struct tm *timeptr);


gmtime 함수와 localtime 함수는 time_t형의 값을 헤더파일내에 선언되어있는 tm 구조체형태로 변환한다.
gmtime은 세계표준시, localtime은 지역시간으로 변환한다.

mktime 함수는 반대로 tm 구조체형식을 time_t 형식으로 바꾼다.


struct tm {
       int tm_sec;     /* seconds after the minute - [0,59] */   초(0~59)
       int tm_min;     /* minutes after the hour - [0,59] */       분(0~59)
       int tm_hour;    /* hours since midnight - [0,23] */        시(0~23)
       int tm_mday;    /* day of the month - [1,31] */             날짜(1~31)
       int tm_mon;     /* months since January - [0,11] */     월(0~11)
       int tm_year;    /* years since 1900 */                          1990년도이후 경과년수
       int tm_wday;    /* days since Sunday - [0,6] */           요일(0~6) 0이 일요일
       int tm_yday;    /* days since January 1 - [0,365] */      년중날짜(0~365)
       int tm_isdst;   /* daylight savings time flag */               일광 절약 시간과의 차
};

    time_t t;
    tm *pt;

    time(&t);
    pt=localtime(&t);

    printf("현재 시간 %d년 %d월 %d일 %d시 %d분 %d초입니다.\n",
         pt->tm_year+1900,pt->tm_mon+1,pt->tm_mday,
         pt->tm_hour,pt->tm_min,pt->tm_sec);;

실행결과 : 현재 시간 2008년 1월 17일 14시 13분 39초입니다.

위 gmtime과 localtime은 기본적으로 헤더파일에 정의되어있는 tm구조체에 시간별로 나누어 데이터를 저장해두기에 필요한 데이터만 뽑아서 사용할 수 있다는 장점이 있습니다. 위의 예제 참조하시면 이용하시는데 불편은 없을것이라 생각됩니다.



char *asctime(const struct tm *timeptr);
size_t strftime(char *strDest, size_t maxsize, const char *format, const struct tm *timeptr);

asctime 함수는 tm 구조체를 문자열로 바꾼다. 다만 영어이며 개행문자도  포함되어있다.

strftime 함수는 시간을 다양한 방식으로 변경하는데 첫번째 인수로 버퍼, 두번째 인수로 버퍼의 길이 세번째 인수로 포맷 방법, 네번째 인수로 tm 구조체를 넣는다.
포맷 형식은 %Y %B %D %HH 등 %의 여러가지 서식을 사용한다.
다만, 모두 영문으로 출력된다.

위에서 사용한 tm구조체를 문자열로 바꾸어주는 함수인데, 전부 영어형식이라 자주 쓰이지는 않습니다.


colck_t clock();

clock_t 타입은 long 형으로 정의되어 있으며 함수가 조사한 값을 CLOCKS_PER_SEC 값으로 나누면 프로그램 실행후의 경과 초를 알 수 있다.
값은 시스템에따라 다르며 윈도우에서는 1000으로 정의되어 있다.

프로그램 실행후 현재시간을 밀리초단위로 알려주는 함수입니다.

clock() / CLOCKS_PER_SEC  이럴경우 현재 프로그램 실행후의 경과초가 되는거죠


double difftime(time_t timer1, time_t timer2);

인수로 넘겨준 두개의 시간의 차이를 초단위로 리턴한다. (timer2 - timer1)

http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10104&eid=nCzwy7UFoBFtqmwNclLzvdo83jv4XfeK&qb=Y3RpbWUgsLPH4A==&pid=f5/oMsoi5UZssuzi4Hhsss--417707&sid=SJ-oM2rVn0gAAAPBVEc

이올린에 북마크하기
2008/08/11 23:43 2008/08/11 23:43

문자열 처리 함수 < string.h >

Posted at 2008/07/26 19:11 // in Programming // by 엔신

문자열 처리 함수는 문자열을 조작하거나 처리하는 기능을 제공한다. 이 함수를 사용하기 위해 <string.h>를 포함(include)하여야 한다. 문자열과 관련된 함수는 아래의 표와 같으며 이들 함수의 변수 str1, str2는 문자형인 포인터 및 문자열 자체를 의 미한다. 문자열 함수들은 문자열을 조작하거나 복사, 연결, 비교, 검출하는 기능을 수행해 주는 함수들이다. 대표적으로 strlen() 함수는 문자 열의 수를 보여주고, strcpy() 함수는 문자열을 복사하며 strcmp() 함수는 두 문자열을 비교한다. 자세한 문자열 처리 함수들의 형식과 기능은 아래 표에서 보여주고 있다.

 

함수명

형식 / 기능

strlen()

unsigned strlen( const char *str )

str의 문자열 길이를 반환

strcat()

char *strcat( char *str1, const char *str2 )

str1의 문자열에 str2의 문자열을 연결

strncat()

char *strncat( char *str1, const char *str2, unsigned c )

str1의 문자열에 str2 문자열의 선두 c개의 문자를 연결

strcmp()

char *strcmp( char *str1, const char * str2 )

str1의 문자열과 str2를 서로 부호 없는 비교,
str1>str2 이면 양수값 반환 / str1<str2 이면 음수값 반환 / str1=str2 이면 0을 반환

strncpm()

char *strncpm( char *str1, const char *str2, unsigned c )

str1 문자열의 선두 c개의 문자와 str2의 문자열을 비교

strcpy()

char *strcpy( char *str1, const char *str2 )

str1의 문자열에 str2의 문자열을 복사, str1의 값을 반환함.

strncpy()

char *strncpy( char *str1, const char *str2, unsigned c )

str1의 문자열에 str2 문자열의 선두 c개의 문자를 복사

strstr()

char *strstr( const char *str1, const char *str2 )

문자열 str2가 문자열 str1에서 처음 일치하는 위치를 알려준다. 만약 문자열이 발견 되면 str1에 있는 그 문 자열의 포인터를 반환한다. 그 외에는 NULL 포인터를 반환한다.

strerror()

char *strerror( int num )

오류번호 num을 받아 해당하는 오류 메시지를 반환

strpbrk()

char *strpbrk( char *str1, const char *str2 )

지정한 str1의 문자열에서 str2의 문자열에 포함된 어떤 문자를 찾고 위치 포인터를 반환

strrchr()

char *strrchr( const char *str, int c )

문자열 str에서 c가 마지막으로 나타나는 위치를 알려준다. c가 발견되면 c의 포인터 를 반환한다. 그 외에는 NULL포인터를 반환한다.

strcspn()

char *strcspn( char *str, const char *str2 )

str1의 문자열에서 str2의 문자열에 포함된 문자가 첫 번째 나타날 때 까지의 문자수

strspn()

char *strspn( char *str1, const char str2 )

str1의 문자열에서 str2의 문자열에 포함되지 않은 문자가 첫 번째 나타날 때까지의 문자수

strtok()

char *strtok( char *str1, const char *str2 )

일련의 strtok 호출은 문자열 str1을 문자열 str2가 가지고 있는 문자로 구분되는 '토큰'으로 나눈다. 첫 번째 호출은 첫 번째 인수인 str1을 사용하여 두 번째 호출부터는 NULL을 첫 번째 인수로 사용한다. 매 호출마다 현재 토큰의 포인터를 반환한다. 더 이상 토큰이 없으면 NULL을 반환한다 .

strupr()

char *strupr( char *str )

지정한 str의 문자열 중 소문자를 대문자로 변환



자세한 설명 및 예제는 www.jjung.net에 있습니다.

[출처] string.h 함수들|작성자 아세트산

이올린에 북마크하기
2008/07/26 19:11 2008/07/26 19:11

입력 받을때 주의

Posted at 2008/04/06 20:42 // in Programming // by 엔신
int 형 자료를 입력 받을때 문자나 문자열로 입력 받게 되면 무한루프에 빠져버림
그러니 char 형으로 자료를 입력 받아서 atoi() 함수를 써서 정수로 변환시켜야함
그리고 문자열 길이 비교는 strcmp()으로 하면 됨
그런데 원래 숫자를 입력받을려고 했던거면 문자열에서 정수로 변환한 후 비교하면됨
이올린에 북마크하기
2008/04/06 20:42 2008/04/06 20:42