ertyui7662   4년 전

반복해서 출력해내는 부분의 코드가

for (int a = 0; a < test_case; a++)
{
       scanf("%d %s", &recur, &string1);
       for (int i = 0; string1[i]!=NULL; i++) //입력받은 문자열을 제어
       {
            for (int j = 0; j < recur; j++) printf("%c", string1[i]);
       }
       printf("\n");
}

위와 같이 되는데요, 두번째 for문을 보면 조건이 string1의 값이 NULL이 아닐때 까지인것은 이해가 되었는데,

다른 방식인 string1의 길이를 strlen을 통해 구한 길이를 가운데 조건으로 넣으면 왜 안되는지 잘 모르겠습니다.

int length=0;

length=strlen(string1);

으로 선언을 하고, 두번째 for문에 조건으로 for(int i=0; i<length;i++)를 하면 세번째 출력하는 for문에서 print를 하지못합니다... 왜그런지 알려주실수

있나요??

yeopgi   4년 전

length의 값을 먼저 프린트로 찍어보시는게 좋을거같네요.  위의 코드대로 실행하셨다면 13번 주석처리하시는거를 scanf("%d %s", &recur, &string1); 요 부분 처리하시고 진행해보세요.

제 생각에 8번 라인은 NULL로 초기화하셔서 그러신거같은데요. 전체 코드를 수정하시기 싫으시다면 char string1[20] = {0}; 이렇게 선언과 동시에 정의해보세요.

yeopgi   4년 전

그나저나 제 코드보다 메모리가 적게 드는군요....  질문자님의 코드보고 반성하게 되네요....

djm03178   4년 전

그 메모리 차이는 iostream을 사용했기 때문에 발생합니다.

yeopgi   4년 전

djm03178 아이고... 이런 댓글까지 달아주시다니 정말 감사드립니다. 최고 !! :)

ertyui7662   4년 전

아하 감사합니다!!

댓글을 작성하려면 로그인해야 합니다.