2017.06.25 20:46
2017.06.25 20:53
문제에서 제시한 것 처럼, 길이가 500 미만의 문자열이 입력으로 들어 올 수 있습니다.
현재 char 형 배열 a에 길이가 459인 문자열을 저장하면, 메모리를 침범하게 됩니다.
왜냐하면, 현재는 배열의 크기가 100 이기 때문입니다.
그래서, '메모리' 접근 위반이 뜨는 것입니다.
배열의 크기를 키워 보세요~
2017.11.01 12:05
아래와 같이 잘못된 답이라 나옵니다. 왜 일까요?
10: (warning) scanf() without field width limits can crash with huge input data.
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{ char a[500]= {0};
int i, len, up=0, low=0;
scanf("%s",&a);
len=strlen(a);
for(i=0; i<len; i++)
{
if(a[i] >= 'A' && a[i] <= 'Z') up++;
else if(a[i] >= 'a' && a[i] <= 'z') low++;
}
printf("%d %dn",low, up);
return 0;
}
2017.12.16 12:33
경고는 무시하셔도 됩니다~
2017.11.03 10:06
배열의 공간을 늘려도 여전히 같은 경고 입니다.
2017.12.16 12:43
정정합니다. 배열의 크기 문제가 아니라, for문의 반복 횟수에 문제가 있습니다.
지금 이 코드는 항상 100회 반복만 합니다.
만약 문자열의 길이가 300인 경우는 앞부분 100개의 문자만 처리하기 때문에
잘못된 값이 나올 수 밖에 없습니다.
2017.11.02 16:35
배열의 크기를 넉넉히 1000으로 늘려 보세요