>> Edit article
이름
제목
패스워드
이 소스 선배에게 테스트 받는 문제인데요. 흠.. 제가 실력이 개뿔도 없어서.. 잘 못해서 그런것 같은데. 무엇이 문제인지 좀 같이 생각좀 해주세요.. 소스 올려놓을께요. #include <stdio.h> #include <conio.h> #include <ctype.h> // isspace함수를 사용하기 위해서 정의 #include <stdlib.h> #include <string.h> // cputs를 비롯한 스트링 함수를 사용하기 위해서 정의 #define MAX_GET 128 // 최대입력치 #define MAX_VALUE 0x7fffffffL // long값의 최대값 #define MIN_VALUE ((long)0x80000000L) // long값의 최소값 long getvalue(size_t width); // 입력함수 만들었음. width는 입력치의 범위 void putvalue(long value); // 출력함수 만들었음. 출력함수개선 void main(void) { long value; // 입력값을 받을곳 clrscr(); // 화면정리 do { cputs("값을입력하세요. : "); cputs(" "); // 줄바꿈 gotoxy(20,wherey()); // 커서를 앞으로 옮김 value=getvalue(10); // 값을 입력받음 if(value != MAX_VALUE && value != MIN_VALUE) // 입력값을 long값과 비교 { cputs(" 결과입니다. : "); // 정상적인 출력 putvalue(value); } else if(value !=MIN_VALUE) cputs("입력값이 범위를 초과했습니다.!"); // long값의 크기에서 벗어남 cputs(" "); } while(value != MIN_VALUE); } long getvalue(size_t width) // 입력함수 { char s[MAX_GET+2], *ps, *temp; long value; s[0]=width + 1; //cgets함수를 사용하기위해서.. cgets(s); if(*(s+2)==' ') return MIN_VALUE; for(ps=s+2;isspace(*ps);ps++); // 공백을 없애주고 이것이 있으면 value=strtol(ps,&temp,10); // 가비지값때문에 이상한 값이 출력될것임 if(*temp != ' ') return MAX_VALUE; else if(value != 0L) return value; // 정상적인 출력 else if(*ps++ == '0' && *ps == ' ') return 0L; else return MAX_VALUE; } void putvalue(long value) // 출력함수 { char s[33],*ps; int len; ltoa(value,s,10); len=strlen(s); ps=s; for(;*ps;ps++) { putch(*ps); // 흠 이밑에 식 생각하느라 진땀뺌 if(--len%3 == 0 && len !=0) putch(','); } } 위엣것은 천단위 콤마찍는 털보씨용 소스 인데. 흠 어디가 잘못일까요? 다음것은 문자열의 원하는 곳부터 끊어서 쉬프트 시키는 건데 어디가 잘못일까요? #include <stdio.h> // 기본적인 헤더들을 읽었음 #include <conio.h> #include <ctype.h> #include <string.h> #include <stdlib.h> void main(void) { clrscr(); // 화면정리 char *s, *p; // 입력을위해서 s를 뒷부분임시저장장소로 temp를 int key,i,len; // 그리고 앞부분용으로 p를 선언 s = (char *) malloc(24); p = (char *) malloc(24); printf("문자열을 입력해 주세요! : "); gets(s); // 스트링 입력함수 len=strlen(s); for(;isspace(*s);s++); // 공백을 없애주고 이것이 있으면 printf("어디서부터 SHIFT할까요? : "); scanf("%d",&key); // 쉬프트 위치를 입력받음 if(len<key || key<=0) { printf("ERROR!"); getch(); free(s); free(p); exit(-1); } else{ strncpy(p,s,key); // 전반부를 잘라냄 s=s+key; printf("Result : %s%s",s,p); // 후반부에 전반부를 붙여서 출력 printf("Press any key for end"); free(s); free(p); } getch(); } 지마페이 흠.. 도와주셨으면 하구요. 메일로 주셔도 감사합니다. 그럼 이만. 아참 환경은 털보씨 3.0에서 컴파일했습니다. 쩝..
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved