strcpy ํจ์๋ ํ ๋ฌธ์์ด์ ๋ค๋ฅธ ๋ฌธ์์ด๋ก ๋ณต์ฌํฉ๋๋ค. ์ฃผ์ํด์ผ ํ ์ ์ ๋์ ๋ฌธ์์ด์ด ์ถฉ๋ถํ ํฌ๊ธฐ๋ฅผ ๊ฐ์ ธ์ผ ํ๋ฉฐ, ๋์ NULL ๋ฌธ์ (\0) ๋ฅผ ํฌํจํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
char* StrCpy(char* dest, const char* src){
char* ret = dest;
while(*src){
*dest = *src;
dest++;
src++;
}
*dest = '\0';
return ret;
}
strcat ํจ์๋ ํ ๋ฌธ์์ด์ ๋์ ๋ค๋ฅธ ๋ฌธ์์ด์ ๋ถ์ ๋๋ค. ์ด ํจ์๋ฅผ ๊ตฌํํ ๋์๋ ๋์ ๋ฌธ์์ด์ ์ถฉ๋ถํ ๊ณต๊ฐ์ด ์์ด์ผ ํ๋ฉฐ, ์ฒซ ๋ฒ์งธ ๋ฌธ์์ด์ ๋์์ ์์ํด์ผ ํฉ๋๋ค.
char* StrCat(char* dest, const char* src){
chart* ret = dest;
while(*dest){
dest++; //dest์ ๋๊น์ง ์ด๋
}
while(*src){ //src ๋ด์ฉ์ dest์ ๋์ ๋ณต์ฌ
*dest = *src;
dest++;
src++;
}
return ret; //๋ง์ง๋ง์ null ๋ฌธ์ ์ถ๊ฐ
}
strlen ํจ์๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๊ณ์ฐํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ํจ์๋ ๋ ์ข ๋ฃ ๋ฌธ์๊ฐ ๋์ฌ ๋๊น์ง ๋ฌธ์์ด์ ์ํํ๋ฉด์ ๊ธธ์ด๋ฅผ ๊ณ์ฐํฉ๋๋ค.
int StrLen(const char *str){
int count = 0;
while(str[count] != 0)
count++;
return count;
}
atol (ASCII to long) ํจ์๋ ๋ฌธ์์ด์ long ์ ์๋ก ๋ณํํ๋ ํจ์์ ๋๋ค. C++์์ ์ด ํจ์๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์๋ ์ฃผ์ด์ง ๋ฌธ์์ด์ ์ํํ๋ฉด์ ๊ฐ ๋ฌธ์๋ฅผ ํด๋นํ๋ ์ซ์ ๊ฐ์ผ๋ก ๋ณํํ๊ณ , ์ด๋ค์ ํฉ์ณ ์ต์ข ์ ์ธ ์ซ์๋ฅผ ๋ง๋ค์ด๋ด์ผ ํฉ๋๋ค.
๊ตฌํ ์ ์ฃผ์ํ ์ ์ ๊ณต๋ฐฑ ์ฒ๋ฆฌ, ๋ถํธ ์ฒ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ์ค๋ฒํ๋ก์ฐ๋ ์ ํจํ์ง ์์ ์ ๋ ฅ์ ๋ํ ์ฒ๋ฆฌ์ ๋๋ค.
- ๋จผ์ , ๊ณต๋ฐฑ ๋ฌธ์๋ฅผ ๋ฌด์ํฉ๋๋ค.
- ๋ค์์ผ๋ก ๋ถํธ๋ฅผ ํ์ธํ๊ณ , ํด๋นํ๋ ๊ฒฝ์ฐ ๋ด๋ถ sign ๋ณ์๋ฅผ ์กฐ์ ํฉ๋๋ค.
- ๋ฌธ์์ด์ ๊ฐ ์ซ์ ๋ฌธ์๋ฅผ ์ํํ๋ฉด์, ๊ฐ ์ซ์๋ฅผ ์ ์๋ก ๋ณํํ๊ณ ์ด์ ๊ฐ์ ์ถ๊ฐํฉ๋๋ค.
- ๋ณํ ๊ณผ์ ์์ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฉด, ์ด๋ฅผ ์ฒดํฌํ๊ณ ์ฒ๋ฆฌํฉ๋๋ค.
- ์ต์ข ๊ฒฐ๊ณผ์ ๋ถํธ๋ฅผ ๊ณฑํ์ฌ ๋ฐํํฉ๋๋ค.
#include <iostream>
#include <climits> // LONG_MAX์ LONG_MIN์ ์ํด
long myAtol(const char *str) {
long result = 0;
int sign = 1; // ๋ถํธ๋ฅผ ๋ํ๋ด๋ ๋ณ์, ๊ธฐ๋ณธ์ ์ผ๋ก ์์
// ๊ณต๋ฐฑ ๋ฌด์
while (*str == ' ' || *str == '\t' || *str == '\n') {
str++;
}
// ๋ถํธ ์ฒดํฌ
if (*str == '-' || *str == '+') {
sign = (*str == '-') ? -1 : 1;
str++;
}
// ์ซ์ ๋ณํ
while (*str >= '0' && *str <= '9') {
int digit = *str - '0';
// ์ค๋ฒํ๋ก์ฐ ์ฒดํฌ
if (result > LONG_MAX / 10 || (result == LONG_MAX / 10 && digit > LONG_MAX % 10)) {
return (sign == 1) ? LONG_MAX : LONG_MIN;
}
result = result * 10 + digit;
str++;
}
return result * sign;
}
int main() {
const char *str = "12345";
long val = myAtol(str);
std::cout << "The converted value is " << val << std::endl;
return 0;
}