ENCRYPT 문제 질문드립니다.

  • somanet
    somanet

    계속 runtime-error가 나오는데 원인을 모르겠습니다.
    VS에서도 돌려보고, linux에서도 돌려봤는데 정상동작해서
    올린건데 계속 런타임 에러네요...

    입력도 한번에 다 넣는걸로 바꿔보고 해도 안되는 이유가 뭘까요?

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    #define NR_STRING    100
    
    void encrypt( char* str );
    
    int main( int argc, char** argv )
    {
        int nr_trying;
        int j;
        char** strings;
        char* str;
    
        scanf("%d", &nr_trying);
    
        strings = (char**)malloc( nr_trying );
    
        for( j=0; j<nr_trying; j++ )
        {
            str = (char*)malloc(NR_STRING);
            scanf("%s", str );
    
            strings[j] = str;
    
        }
    
        for( j=0; j<nr_trying; j++ )
        {
            encrypt( strings[j] );
    
            printf( "%s\n", strings[j] );
    
            free(strings[j]);
        }
    
    
    
        return 0;
    }
    
    
    void encrypt( char* str )
    {
        char* currStrPos;
        char* currTempPos;
        int stringLen;
        int i;
        char tempStr[NR_STRING] = { 0, };
    
        stringLen = strlen(str);
    
        currStrPos = str;
        currTempPos = tempStr;
    
        for( i=0; i<stringLen; i++)
        {
            if( i%2 == 0)
            {
                *currStrPos = str[i];
                currStrPos++;
            }
            else
            {
                *currTempPos = str[i];
                currTempPos++;
            }
    
        }
    
        str[currStrPos-str] = '\0';
        tempStr[currTempPos-tempStr] = '\0';
    
        strcat(str,tempStr);
    
    
    }
    

    12년 전
3개의 댓글이 있습니다.
  • JongMan
    JongMan


    C에서 100자짜리 문자열을 저장하려면 배열 길이가 얼마여야 할까요?


    12년 전 link
  • somanet
    somanet

    다시 해보겠습니다. 감사합니다.


    12년 전 link
  • JongMan
    JongMan

    입출력은 가능하면 C++문자열을 사용하시거나, 아니라면 정적 배열을 사용하시기를 추천드립니다. 동적 배열 메모리 관리는 프로그래밍 대회에서 직접 하기에는 너무 까다롭습니다.


    12년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.