output limit라는데 머가 잘못됬을까요

antonio97k Reply 9 years 30 weeks ago
#include <stdio.h> #include <stdlib.h> int k; char arr[100000]; int main() { char c, i ,j; while(1) { c=getchar(); if(c==EOF) break; arr[k]=c; k++; } for(i=0;i<k;i++) { if(arr[i+1]=='-') { if(arr[i]>='A'&&arr[i+2]<='Z'&&arr[i+2]>=arr[i]) { for(j=0;j<=arr[i+2]-arr[i];j++) { printf("%c",arr[i]+j); } i+=2; } else if(arr[i]>='a'&&arr[i+2]<='z'&&arr[i+2]>=arr[i]) { for(j=0;j<=arr[i+2]-arr[i];j++) { printf("%c",arr[i]+j); } i+=2; } else if(arr[i]>='0'&&arr[i+2]<='9'&&arr[i+2]>=arr[i]) { for(j=0;j<=arr[i+2]-arr[i];j++) { printf("%c",arr[i]+j); } i+=2; } else printf("%c",arr[i]); } else printf("%c",arr[i]); } return 0; }
pichulia Reply 9 years 30 weeks ago
문장의 길이가 1000 까지 될 수 있습니다. 즉 k가 1000이 될 수 있다는 거죠. 근데 지금 i 가 char 형이라서 문제가 발생합니다. i가 127에서 i++을 하면 -128이 됩니다. 당장 예제만 돌려봐도 무한루프가 돔을 볼 수 있습니다.