728x90
오늘은 리눅스에서 골치 아팠던 문자열 정수 변환 방법에 대해 알아보겠습니다
골치 아팠던 이유 중 하나는 mysql DB의 값을 select count 또는 정수형 데이터를
읽어올 때 결과값을결괏값을 atoi를 통해서 변환을 한 뒤에 사용해야 하는데 해당 결괏값을
그대로 사용하려다 보니 에러가 발생했습니다
atoi 의미
atoi 함수는 a, to, i 세 가지로 분리해서 볼 수 있습니다
a = ASCII, i = Int로 해석한다면 atoi의 뜻은 ASCII to Int입니다
즉 char 타입을 int 타입으로 변경한다는 것입니다
함수 원형
<stdlib.h>
<cstdlib>
int atoi ( const char* str );
double atof( const char* str );
long int atol( const char* str );
예제
<stdlib.h>
void main(){
char strQuery[512];
int iStatus=0;
memset(strQuery,0x00,sizeof(strQuery));
sprintf(strQuery, "select count_data from test_table");
iStatus = mysql_query(connection, strQuery);
if(iStatus==0){
mysqlResult = mysql_store_result(connection);
row = mysql_fetch_row(mysqlResult);
if(atoi(row[0])==0){
// 처리코드
}else{
// 처리코드
}
}
}
select 쿼리를 통해 가져온 count_data값은 정수 값으로 쿼리 결과를 가져오는 row에서
atoi를 통해 정수형으로 변경하고 0인지 아닌지를 판별하는 프로그램입니다
mysql_fetch_row가 결괏값으로 문자열을 반환하기 때문에 처음 row [0]의 값은 "0" 또는 "숫자"값이 나오게 됩니다
atoi를 통해 변경한 row[0]의 값은 ""가 제거된 0 또는 숫자의 값을 출력합니다
atoi 함수는 매개변수로 들어온 문자열을 앞에서부터 차례로 확인해서
공백 또는 문자가 나올 때까지 숫자로 변환해줍니다
예를 들어 "2022 Test"라는 문자를 atoi를 통해 변환하게 되면 결괏값은 2022가 됩니다
문자와 섞일 경우 결과값
char test1[] = "CodingHero";
char test2[] = "1234";
char test3[] = "2022Coding"
char test4[] = "Coding2022"
atoi(test1);
atoi(test2);
atoi(test3);
atoi(test4);
// test1 => 0
// test2 => 1234
// test3 => 2022
// test4 => 0
test4의 경우에는 숫자를 만나기 전에 문자가 먼저 나오기 때문에 바로 0을 반환합니다
728x90
반응형
'언어 > C언어' 카테고리의 다른 글
[C언어] strstr 함수 사용 (2) | 2023.10.27 |
---|---|
[C언어] memcpy 함수 사용법 (0) | 2023.10.27 |
[c언어] 시간을 구하는 strftime 함수 (4) | 2022.08.05 |
음수 표현 2의 보수 (4) | 2022.05.25 |
json-c 라이브러리 사용 방법 (6) | 2022.05.16 |
댓글