티스토리 뷰
알고리즘 문제를 풀던중에 "C2H4"문자열을 입력받고
배열에 넣어서 숫자화를 시켜야 하는데 배열을 초기화하는 방법이 헷갈렸다.
문제 소스
#include <studio.h>
int main(){
char ch[10];
int res, cnum=1, hnum=1;
scanf("%s", &ch);
if(ch[1]=='H'){
cnum = 1;
pos = 1;
} else {
for(i=1; ch[i]!='H'; i++){
cnum = cnum*10 + (ch[i]-48);
}
pos=i;
}
if(ch[pos+1]=='\0'){
hnum = 1;
} else {
for(i=pos+1; ch[i]!='\0'; i++){
hnum = hnum*10 + (ch[i]-48);
}
}
res = cnum*12+hnum;
printf("%d", res);
}
궁금한 점을 정확히 하면
문자열을 입력받고 for문으로 하나씩 배열에 넣어주지 않아도 자동으로 배열에 입력된 값으로 초기화 되는지가 궁금했다.
(java의 경우 문자열을 입력 받는 경우에 바로 입력되지 않고 for문에서 charAt(i)을 이용해서 받아와야 했기 때문에)
찾아보니
c++은 java와 다르게 char배열로 선언하고 바로 입력받으면 char로 초기화가 된다.
- "C2H4"를 입력하면
- ch 배열에 ch[0]='C', ch[1]='2', ch[2]='H', ch[4]='4'로 초기화 됨
- C와 H뿐만 아니라 2와 4도 문자로 인식되어서 ch배열에 입력된다.
- 따라서 char ch[10]로 선언한 후 scanf("%s", &ch);로 입력받으면 자동으로 ch배열에 입력한 문자가 하나씩 들어온다.
- 대신에 공백, 개행 무시
'c++' 카테고리의 다른 글
[c++] vector를 사용해서 동적으로 배열 입력받기 (0) | 2020.12.25 |
---|---|
[c++] scanf, printf에서 %s, %d (0) | 2020.12.13 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 소프트웨어
- client side rendering
- 최단경로
- 입출력장치
- 자료구조
- 이진탐색
- 운영체제
- 세마포어
- 병행프로세스
- C++
- javascript
- Stack
- 교착상태
- 클래스
- Java
- react
- 알고리즘
- 재귀함수
- 동적프로그래밍
- 스텍
- BFS
- 배열
- 인접행렬
- 구조체
- C
- 인접리스트
- stackframe
- 퀵정렬
- server side rendering
- dfs
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함