do while활용하기
천사의눈물
strcat함수를 통해서 문자열의 덧붙임을 했을 때, 배열 str1의 길이를 넘어서지 않는 경우에만 덧붙임한것이 출력되도록하기.덧붙임이 가능한 문자열이 입력될때까지 계속해서 문자열의 입력을 요구하는 형태로하기.저는 이걸위해서 do while문을 이용했습니다.========================================#include stdio.h
#include string.hint main(void)
{
char str1[20]=your name is;
char str2[20];
do
{
printf(이름을 입력하세요 : );
gets(str2);
strcat(str1,str2);
}while(sizeof(str1)20);
puts(str1);
return 0;
}
===========================================근데 do while문을 빠져나갔을때는 잘 작동이 되는데..str1의 길이가 20을 넘어서는경우에는 바로 프로그램이 종료되네요..분명 다시 입력을 받아야하는데.. 왜이런건지 잘모르겠습니다.
-
초코초코해
의도적인게아니라 실수입니다 ^^;;;; ㅠㅠ
-
물맑
sizeof(str1) 은 항상 20 인데, while문 안의 수식은 의도적인 것인가요?
-
나빛
str1의 길이가 20을 넘어가면 오버플로우로 인해 뻗습니다.
선언하신 변수의 크기가 20인데 그것보다 큰 값을 입력하셔서 죽는거에요
fgets를 사용하시면 해결 하실수 있습니다.
문자열 길이로 반복문을 체크하시려면 길이가 긴 변수를 선언하신 다음에
반복문 종료 후 해제하거나 하는식으로 해보심이...
그리고 문자열의 길이가 둘다 20인 상태에서
문자열1에 특정 문자열이 있고 거기에 20만큼 길이의 문자열을 붙이면...
문제가 생기겠네요