넓은 공간에 들어가는 것과 문자를 넣고 숫자변환을 해서 출력해본다.
#include<stdio.h>
int
main(void)
{
char c_array1[7] = { 'c','o','d','i','n','g','\0'};
printf("%s\n", c_array1);
char c_array2[6] = { 'c','o','d','i','n','g'};
printf("%s\n", c_array2);
char c_array3[10] = { 'c','o','d','i','n','g'};
printf("%s\n", c_array3);
for (int i = 0; i < sizeof(c_array3); i++)
{
printf("%c\n", c_array3[i]);
}
for (int i = 0; i < sizeof(c_array3); i++)
{
printf("%d\n", c_array3[i]); // ASCII코드값 출력
}
return 0;
}
첫줄은 array1이 7칸으로 정의되고 6byte가 들어갔으니 공백문자가 잘 출력되고
두번재줄은 array2가 6칸으로 정의되서 \0이 들어갈자리가 없어서 한자가 출력됨
세번째줄은 공백문자가 들어갈 자리가 있으므로 따로 넣지 않아도 들어감
네번째줄부터 for문을 통해 그 것을 알 수 있고
문자를 넣은 array를 숫자로 출력하면 아스키코드가 나타남.
#include<stdio.h>
int
main(void)
{
char name[256];
printf("이름을
입력하세요 : ");
scanf_s("%s", name, sizeof(name));
printf("%s\n", name);
return 0;
}
사이즈를 늘리면 잘 들어간다.
근데.. 이것도 BOF에는 취약하지 않을까 차라리...입력값에 sizeof를 해서 맞게 만들어주는게 가능하다면 그렇게 만드는게 낫지않을까 생각이 들엇다.
댓글 없음:
댓글 쓰기