백준 온라인 저지 10808번 - 알파벳 개수 문제, 풀이 정리

#include <stdio.h>

int main(){
    char alnum[27]={0,};
    int str[101]={0,};
    int i;
    gets(str);
    for(i=0;str[i]!='\0';i++){
        alnum[str[i]-'a']++;
    }
    for(i=0;i<26;i++){
    printf("%d ",alnum[i]);
    }
}
// 런타임 에러  왜???
str[i] 각각의 요소들은 문자이므로 char 형으로 받아야 한다. int 형으로 쓰면 25개 이상의 문자를 쓰면 str배열의 범위를 초과하게 되므로 런타임 에러가 나타나는 것.


덧글

  • 지온 2018/01/13 22:05 # 답글

    int가 환경에 따라 다르지만 보통 4바이트
    글자 하나크기는 아마 1바이트

    1. 따라서 4개의 글자를 읽으면 3개의 글자는 무시됌
    2. 또한 4개의 글자를 읽었으므로 크기는 100보다 크거나 음수가 됨 <- 런타임 에러
  • COPES 2018/01/17 19:26 #

    아! 감사합니다ㅎㅎ
댓글 입력 영역