2020. 4. 19.

[c] 인프런 40. 문자열 심화 강의 정리


넓은 공간에 들어가는 것과 문자를 넣고 숫자변환을 해서 출력해본다.


#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 해서 맞게 만들어주는게 가능하다면 그렇게 만드는게 낫지않을까 생각이 들엇다.

댓글 없음:

댓글 쓰기