반복해서 출력해내는 부분의 코드가
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를 하지못합니다... 왜그런지 알려주실수
있나요??
length의 값을 먼저 프린트로 찍어보시는게 좋을거같네요. 위의 코드대로 실행하셨다면 13번 주석처리하시는거를 scanf("%d %s", &recur, &string1); 요 부분 처리하시고 진행해보세요.
제 생각에 8번 라인은 NULL로 초기화하셔서 그러신거같은데요. 전체 코드를 수정하시기 싫으시다면 char string1[20] = {0}; 이렇게 선언과 동시에 정의해보세요.
그나저나 제 코드보다 메모리가 적게 드는군요.... 질문자님의 코드보고 반성하게 되네요....
그 메모리 차이는 iostream을 사용했기 때문에 발생합니다.
djm03178 아이고... 이런 댓글까지 달아주시다니 정말 감사드립니다. 최고 !! :)
아하 감사합니다!!
댓글을 작성하려면 로그인해야 합니다.
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를 하지못합니다... 왜그런지 알려주실수
있나요??