문자열을 int로 변환하는 것은 프로그래밍 세계에서 반복되는 작업입니다. 간단한 작업임에도 불구하고 많은 코더는 이 작업을 수행하는 동안 실패하거나 혼란스러워합니다. 변환은 대부분 문자열로 저장된 숫자에 대한 작업을 수행할 수 있도록 수행됩니다.
예:
str=163″
번호=163
C는 강력한 형식의 언어입니다. 데이터 유형에 허용되지 않는 값을 입력하려고 하면 오류가 발생합니다. 입력뿐만 아니라 작업을 수행하는 동안에도 오류가 발생합니다.
문자열을 int로 변환하는 방법에는 다음과 같은 3가지 방법이 있습니다.
- atoi( ) 사용 루프 사용 sscanf() 사용
1. atoi( )를 이용한 문자열 변환
C의 atoi() 함수는 문자 배열이나 문자열 리터럴을 인수로 사용하여 해당 값을 반환합니다. 정수 . 이는 다음에서 정의됩니다. 헤더 파일.
관찰한다면 끌고 가다() 좀 더 가까이 다가가면 이것이 다음을 의미한다는 것을 알게 될 것입니다:

간단한 용어로 atoi() 분석
예:
씨
부분 파생 기호 라텍스
// C program to demonstrate the> // functioning of the atoi() function> #include> #include> int> main()> {> >char>* str1 =>'141'>;> >char>* str2 =>'3.14'>;> > >// explicit type casting> >int> res1 =>atoi>(str1);> >// explicit type casting> >int> res2 =>atoi>(str2);> > >printf>(>'atoi(%s) is %d
'>, str1, res1);> >printf>(>'atoi(%s) is %d
'>, str2, res2);> > >return> 0;> }> |
>
>산출
atoi(141) is 141 atoi(3.14) is 3>
Atoi는 문자열에 대해 약간 다르게 동작합니다. 방법을 확인해 봅시다:
예:
씨
// C Program to implement> // Atoi function with char array> #include> #include> > int> main()> {> >char>* str1 =>'Geek 12345'>;> >char>* str2 =>'12345 Geek'>;> > >int> num1 =>atoi>(str1);> >int> num2 =>atoi>(str2);> > >printf>(>'%d is of '%s'
'>, num1, str1);> >printf>(>'%d is of '%s'
'>, num2, str2);> > >return> 0;> }> |
>
>산출
0 is of 'Geek 12345' 12345 is of '12345 Geek'>
설명:
- Geek 12345 여기서는 'Geek'이 첫 번째 단어이므로 대답은 다음과 같습니다. 0(숫자 없음)
- 12345 여기 괴짜 '12345'가 첫 번째 단어이므로 대답은 12345입니다.
2. 루프 사용
루프를 사용하면 문자열의 각 요소를 하나씩 탐색하고 숫자 문자를 ASCII 값과 비교하여 숫자 값을 얻고 정수를 생성하기 위해 일부 수학을 사용하여 문자열을 정수로 변환할 수 있습니다. 아래 예에서는 이를 수행하는 방법을 보여줍니다.
예:
씨
// C Program to convert string> // into integer using for loop> #include> #include> > int> main()> {> >char>* str =>'4213'>;> >int> num = 0;> > >// converting string to number> >for> (>int> i = 0; str[i] !=>' '>; i++) {> >num = num * 10 + (str[i] - 48);> >}> > >// at this point num contains the converted number> >printf>(>'%d
'>, num);> >return> 0;> }> |
>
>산출
4213>
참고: 숫자 문자를 숫자 값으로 변환하기 위해 str[i] – 48을 사용했습니다. 예를 들어 문자 '5'의 ASCII 값은 53이므로 숫자 값은 53 – 48 = 5입니다.
3. sscanf() 사용
sscanf()를 사용하면 문자열을 정수로 쉽게 변환할 수 있습니다. 이 함수는 문자열에서 형식화된 입력을 읽습니다.
sscanf 구문:
int sscanf (const char * source, const char * formatted_string, ...);>
매개변수 :
- 소스 – 소스 문자열. formatted_string – 다음을 포함하는 문자열 형식 지정자 . … : – 입력 데이터를 저장하려는 변수의 주소가 포함된 변수 인수 목록입니다.
이러한 인수는 최소한 형식 지정자에 의해 저장된 값 수만큼 있어야 합니다. 성공하면 함수는 채워진 변수의 수를 반환합니다. 입력이 실패한 경우 데이터를 성공적으로 읽기 전에 EOF가 반환됩니다.
예:
씨
// C program to demonstrate> // the working of SSCANF() to> // convert a string into a number> #include> > int> main()> {> >const> char>* str1 =>'12345'>;> >const> char>* str2 =>'12345.54'>;> >int> x;> > >// taking integer value using %d format specifier for> >// int> >sscanf>(str1,>'%d'>, &x);> >printf>(>'The value of x : %d
'>, x);> > >float> y;> >// taking float value using %f format specifier for> >// float> >sscanf>(str2,>'%f'>, &y);> >printf>(>'The value of x : %f
'>, y);> > >return> 0;> }> |
>
>산출
The value of x : 12345 The value of x : 12345.540039>
String을 int로 타입캐스트할 수 있나요?
정답은 아니요 . 문자열을 숫자로 변환하기 위해 타입 캐스팅을 사용하면 아래 예와 같이 오류가 발생합니다.
예:
씨
// C Program to check the output> // of typecasting from string to integer> #include> > int> main()> {> >string str =>'8'>;> >int> num;> > >// Typecasting> >num = (>int>)str;> >return> 0;> }> |
>
>
산출:
main.c: In function ‘main’: main.c:9:11: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] 9 | num = (int)str; | ^ 1683652612>
설명: 둘 다로서 문자열과 int가 동일한 개체 계층 구조에 있지 않습니다. , 우리 암시적 또는 명시적 유형 캐스팅을 수행할 수 없습니다. double을 int로 변환하거나 float를 int로 변환하는 경우에 할 수 있는 것처럼 말입니다.
위 코드에서 출력 결과에 가비지 값이 포함되어 경고가 표시되는 것을 볼 수 있습니다. 따라서 이러한 상황을 피하기 위해 위에서 설명한 방법을 사용합니다.