Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 별찍기
- 정보처리기사
- 김성엽
- 포트폴리오
- C
- 미가공
- C언어
- 충무창업큐브
- 실습
- mfc 실습
- 핵심 요약
- visual
- 마이크로소프트
- MyTread
- 도움말
- MFC 예제
- mysql
- 유료강좌
- linux
- tips강좌
- C++
- Tipsware
- MFC
- SSG
- Time
- do it c
- win32
- ListBox
- 정처기 독학
- MyThread
Archives
- Today
- Total
History
문자열에 포함된 숫자를 문자로 변경하기 본문
728x90
반응형
"12@3s4#5$6%7^8p9"
위와 같이 숫자와 문자가 같이 섞여있는 문자열이 있다. 이 문자열에서 숫자를 제외한 다른 문자를 제외하고 123456789라는 숫자를 출력하고 싶으면 어떻게 해야 할까?
이 경우에는 atoi함수도 사용할 수 없다. 왜냐하면 atoi함수는 문자로 된 숫자를 int 형식으로 바꿔주는 함수이지만 이렇게 숫자 중간에 다른 문자가 껴있으면 숫자로 표시된 12만 정수로 바뀌고 그 뒤에 나온 @문자를 만나는 순간 변환을 중단하고 함수를 빠져나오도록 설계되어있기 때문이다.
그럼 atoi를 사용하지 않고 숫자와 문자가 섞여있는 문자열을 정수 형태로 분리해서 값을 대입하는 코드를 구현하면 아래와 같다.
#include<stdio.h>
int main()
{
char *p_arr="12@3s4#5$6%7^8p9"; // 문자열 시작 주소 대입
int result=0; // 정수의 결과를 대입할 변수
while(*p_arr) //*p_arr에 NULL문자를 만날때까지 반복문 실행
{
if(*p_arr>='0'&&*p_arr<='9') //문자열 '1'~'9'까지 범위를 설정한다.
{
result= (result*10)+ *p_arr-'0'; //문자열 '1'~'9에 -'0'을 빼면 각 정수가 된다.
}
p_arr++;
}
printf("result: %d",result); //결과값 출력
return 0;
}
728x90
반응형
'C,C++ > 개념 실습 프로그래밍' 카테고리의 다른 글
[c언어]구조체 내부의 특정 변수만 복사하기 (2) | 2022.09.25 |
---|---|
[c언어]현재 시간을 출력하려면 어떻게 해야할까? (0) | 2022.09.21 |
쉼표로 문자열을 구분해서 줄바꿈 출력하기 - 함수 직접 구현 (2) | 2022.09.21 |
strtok_s 함수를 이용해서 쉼표로 문자열을 구분해서 줄바꿈 출력하기 (0) | 2022.09.21 |
[c언어]쉼표로 문자열을 구분해서 줄바꿈 출력하기 (0) | 2022.09.19 |
Comments