이번에 기사 시험을 보는데, Visual C++ 로 신청했거든요?
근데 교재는 터보 C밖에 없네요. Visual로 컴파일 하는데 자꾸 warning이 뜨고..
물어볼 사람도 없고 답답하네요.
도움 주시면 감사하겠습니다. 아래는 소스입니다.
--------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLEN 256
struct RecForm {
char Field01[7]; // 거래번호(6 바이트)
long Field02; // 단가(5 바이트) * 판매량(3 바이트)
} rec[1000];
void main(int argc, char *argv[])
{
static char *Line[MAXLEN]; // 한 라인 저장
int i, j, Cnt, Start, End; // 첨자(i,j,Cnt), 인수1, 인수2
FILE *Infp, *Outfp; // 파일 포인터
static char Temp3[4], Temp5[6]; // 숫자필드 임시저장
long Danga, Panme, Point; // 단가, 판매량, 이익포인트
static char ExTemp1[7]; // 거래번호 정렬시 사용
long ExTemp2; // (단가*판매량) 정렬시 사용
Start = atoi(argv[1]); // 첫번째 파라미터
End = atoi(argv[2]); // 두번째 파라미터
// 입력파일을 입력전용(텍스트 모드)으로 연다.
Infp = fopen("abc0010.txt", "rt");
Cnt = 0; // 구조체 위치변수 초기화
// 입력부분(조건에 맞는 자료 배열에 저장)
for(i = 1; i <= End; i++) {
fgets(*Line, MAXLEN, Infp);
if(i >= Start) {
Point = atol(strncpy(Temp3, Line+24, 3)); // 이익포인트
Danga = atol(strncpy(Temp5, Line+16, 5)); // 단가
Panme = atol(strncpy(Temp3, Line+21, 3)); // 판매량
if(Point >= 30) { // 이익포인트 30 이상
Cnt++;
strncpy(rec[Cnt].Field01, Line+0, 6); // 거래번호
rec[Cnt].Field02 = Danga * Panme; // (단가*판매량)
}
}
}
// (단가*판매량)의 값에 따라 정렬
for(i = 1; i <= Cnt-1; i++)
for(j = i+1; j <= Cnt; j++)
// 오름차순 정렬, 같은경우 거래번호의 오름차순 정렬
if((rec[i].Field02 > rec[j].Field02) ||
((rec[i].Field02 == rec[j].Field02) &&
(strcmp(rec[i].Field01, rec[j].Field01) > 0))) {
strcpy(ExTemp1, rec[i].Field01); // 거래번호 교환
strcpy(rec[i].Field01, rec[j].Field01);
strcpy(rec[j].Field01, ExTemp1);
ExTemp2 = rec[i].Field02; // (단가*판매량) 교환
rec[i].Field02 = rec[j].Field02;
rec[j].Field02 = ExTemp2;
}
// 입력파일을 닫는다.
fclose(Infp);
// 출력파일을 출력전용(텍스트모드)으로 연다.
Outfp = fopen("ans1.txt", "wt");
// 출력파일에 결과값을 출력한다. - 5번째 거래번호
fprintf(Outfp, "%d %d %s\n", Start, End, rec[5].Field01);
// 출력파일을 닫는다.
fclose(Outfp);
}
---------------------------------------------------------------------------------------------
컴파일 하면 다음과 같은 compile 결과가 뜹니다...
Compiling...
p1.c
C:\C_IT\Data\p1.c(35) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'char ** '
C:\C_IT\Data\p1.c(35) : warning C4024: 'strncpy' : different types for formal and actual parameter 2
C:\C_IT\Data\p1.c(36) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'char ** '
C:\C_IT\Data\p1.c(36) : warning C4024: 'strncpy' : different types for formal and actual parameter 2
C:\C_IT\Data\p1.c(37) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'char ** '
C:\C_IT\Data\p1.c(37) : warning C4024: 'strncpy' : different types for formal and actual parameter 2
C:\C_IT\Data\p1.c(41) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'char ** '
C:\C_IT\Data\p1.c(41) : warning C4024: 'strncpy' : different types for formal and actual parameter 2
p1.obj - 0 error(s), 8 warning(s)
물론 소스에 잘못된 부분은 없구요... 단지 이게 Visual C++ 에서도 컴파일이 됐으면
좋겠네요. 어떻게 하면 warning이 안뜰까요?
도움 부탁드립니다....
|