씨언어 배열을 잘 모르겠습니다.
패틱
#includestdio.h
#includestring.h
void
void main(){
char str[100];
printf(문자열을 입력하시오 : );
scanf(%s, str);
for(int i=0;istrlen(str);i++) // stringlength로 사용한 예문
{
printf(%s\n, str+i);
}
printf(strlen=%d\n, strlen(str));
printf(sizeof=%d\n, sizeof(str));
}
printf(%s\n, str+i);
여기서str+i가 정확하게 잘 모르겠습니다.
for문을 통해서 i가 1씩 증가하면서
str[0]~[99]까지 증가가 되는게 맞는거 같은데
그럼 문자가 1개만 찍히면서 나와야하는데 문자열이 나오네요..
만약 abcde를 입력을 하면
abcde
abcd
abc
ab
a
이런 형식으로 출력이 되는데
왜이렇게 출력이 되는지 궁금하니다,
원래대로라면
a
b
c
d
e
이렇게 출력이 되야하지 않나요?
-
보담
배열도 포인터입니다. 즉, str+0 은 str의 첫번째 주소를 가리키고, str+1은 두번째 주소, str+2는 세번째 주소를 가리키고 있습니다. 그렇기때문에 char형 포인터로 인식해서 출력되는것입니다.
hello라고 치면 str+0에서 출력은 : hello , str+1은 hello에서 1만큼 주소값이 이동했기때문에 e를 가리키는거지요 그래서 출력을 해버리면 포인터가 e를 시작으로 출력이 다 됩니다.
하나하나 출력을 하실거면 str[i] 이렇게 배