1. 문제 해결을 위해 디버깅 방법을 좀 익히셔야 할 듯 합니다.. 주위에 좀 하시는 분들께 간단한 디버깅 방법 물어보세요..
2. 숫자가 2자리 이상일 경우 (ex. 11+1) 문제가 생기는 구조네요..
해결하려면 구조를 뜯어고치셔야 함.
3. 간단하게 밑에 설명해 뒀습니다. 확인해보세요.
: #include<stdio.h>
: main() {
: int i,sum;
: char str[40],su[3]" " ; /////// su[3]에 대해 초기화를 하셔야합니다. su[0] = '\0' ...
: gets(str);
: if(strlen(str)>40){
: printf("40바이트 초과 다시 입력 "\n);
: gets(str);
: }
: str[40]=atoi(str);
//// 1. str[40]은 접근하면 안되는 곳, 배열 범위 오버
//// 2. atoi에 문장을 그대로 넣으면 안되죠.. 밑에 for 문에 끝난후 atoi(su[0]) 이런 식으로 해야함
:
: for(i=0 ; i<40 ; i++) {
: if(str[i]!=NULL){ ///// 빈칸은 ' '으로 체크하시고..
: if(su[0]==NULL){ //// 위에서 초기화를 해야 여기서 if문 안으로 들어갑니다.
: su[0]= str[i];
: }
: else if(su[1]==NULL){
: su[1]= str[i];
: }
: else if(su[2]==NULL){
: su[2]= str[i];
: }
: }
: }
: if(su[1]=='+'){
: sum = su[0] + su[2]; ///// su들에 atoi처리
: }
: else if (su[1]=='-'){
: sum = su[0] - su[2];
: }
: else if (su[1]=='*'){
: sum = su[0] * su[2];
: }
: else if (su[1] =='/'){
: sum = su[0] / su[2];
: }
: printf("%d %d %d = %d\n",su[0],su[1],su[2],sum);
: }
: -----------------------------------------------------------------------------
: 이게 에러가 떠주면 고치기라도 하겠습니다만 실행은 되는데 값은 이상하게 나오고..
|