도움 안되는 답글이지만...
C 책이나 홈페이지에서 '디버깅 하는 방법'을 좀 찾아보세요.
변수의 값을 보면서 추적하는 방법은 꼭 필요한 방법일듯 싶습니다.
왕초보연습생 님이 쓰신 글 :
: 일단 대학교 2학년 입니다..
:
: 이정도의 학교에서 배우는 수준이라고 생각해주세요..
:
: 아래는 이런 문제입니다.
:
: 15개의 문장를 2번 받아서
:
: 첫번째 받은 문장의 4번째 글자 뒤에
:
: 2번째 문장이 오게 하고
:
: 그다음 다시 남은 첫번째 문장이 나오게 하는건데요
:
: 스트링함수 전혀 쓰지 말고 기본으로 하라고 하더라구요..
:
: 함수를 꼭 사용하게 하라고 해서 어찌 짰는데 리턴값이 이상한거 같아요..
:
: 저 함수를 메인에 넣어서 실행하면 잘 되는데
:
: 함수에서 실행해서 리턴받으니 이상한 값만 나오네요..
:
: 어떤문제인지라도 가르쳐 주십사 하고 찾는중 이곳으로 왔어요..
:
: 부탁드립니다(__)
:
:
: #include <stdio.h>
:
: char funchar(char a[15], char b[15], int c, int d);
:
: int main(void)
: {
: //변수선언
: char inp1[100];
: char inp2[100];
: char outp[30];
: int i;
: int cnt1;
: int cnt2;
:
: //받아오기
: printf("첫번째 문장을 입력하시오:");
: gets(inp1);
: printf("두번째 문장을 입력하시오:");
: gets(inp2);
:
: //15자 글자 제한 & 카운트 초기화
: inp1[15] = '\0';
: inp2[15] = '\0';
: cnt1=0;
: cnt2=0;
:
: //입력받은 글자수 카운트
: for (i=0;i<=15;i++)
: {
: if (inp1[i] == '\0')
: {
: cnt1 = i+1;
: break;
: }
: }
:
: for (i=0;i<=15;i++)
: {
: if (inp2[i] == '\0')
: {
: cnt2 = i;
: break;
: }
: }
:
: outp[30] = funchar(inp1,inp2,cnt1,cnt2);
:
: //결과물 출력
: printf("4번째에 끼워진 문장은 다음과 같다:");
: for (i=0;i<=30;i++)
: {
: printf("%c",outp[i]);
: }
: printf("\n");
: printf("%s",outp);
: }
:
: char funchar(char a[15], char b[15], int c, int d)
: {
: static char out[30];
: int i;
:
: //4글자 까지 변수에 넣기
: for (i=0;i<4;i++){
: out[i] = a[i]; }
:
: //4글자 이후 문장 넣기
: for (i=0;i<d;i++){
: out[(i+4)] = b[i]; }
:
: //남은 문장 넣기
: for (i=4;i<c;i++){
: out[(i+d)] = a[i]; }
:
: //문장완성 이후 문장 종료 삽입
: out[c+d] = '\0';
:
: return out[30];
:
: }
|