이 소스 선배에게 테스트 받는 문제인데요. 흠.. 제가 실력이 개뿔도 없어서.. 잘
못해서 그런것 같은데. 무엇이 문제인지 좀 같이 생각좀 해주세요..
소스 올려놓을께요.
#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(v
alue,s,10);
len=strlen(s);
ps=s;
for(;*ps;ps++)
{
putch(*ps); // 흠 이밑에 식 생각하
느라 진땀뺌
if(--len%3 == 0 && len !=0) putch(',');
}
}
위엣것은 천단위 콤마찍는 털보씨용 소
스 인데. 흠 어디가 잘못일까요?
다음것은 문자열의 원하는 곳부터 끊어서 쉬프트 시키는
건데 어디가 잘못일까요?
#include <stdio.h> // 기본적인 헤더들을 읽었음
#include <co
nio.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(;i
sspace(*s);s++); // 공백을 없애주고 이것이 있으면
printf("어디서부터 SHIFT할까요? : ");
scan
f("%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에서 컴파일했습니
다. 쩝..