#include <stdio.h>
int main()
{
char str[50];
int idx = 0;
printf("단어를 입력하세요 : ");
scanf_s("%s", str, 50);
while (str[idx] != 0)
{
idx++;
printf("%d\n", idx);
}
printf("이단어는 %d개의 문자로 이루어져 있습니다.\n", idx);
return 0;
}
영단어를 입력받아서 그 글자수를 출력하는 문제인데요.
문자열에서 마지막 null문자를 찾으면 빠져나가고, 그값을 출력하는 식으로 만들었어요.
근데 아스키코드값 0이랑 '/0'이 같다고해서( str[8]=0 이랑 str[8]='/0'이 같다고 책에 적혀있더라구요)
위에 하이라이트한부분에 0을 '/0'으로 바꿔봤더니 에러가 떠요.
뭐가문제인지는 잘모르겠고.. idx값이라도 확인하려고 printf를 넣었는데 '/0'으로 바꾸니까 idx가 1800?가까이 튀어오르더라구요.
제가 뭘 잘못알고있는건가요?ㅠㅠ
그리고 두번째로, 제 책이 scanf가 scanf_s로 나오기 전에 출판된거 같은데요.
scanf_s는 오버플로우를 방지하기 위해서 문자열의 갯수를 지정해준다고 들었어요.
그래서 저는 sizeof(str)=50을 넣었는데, 이거 마음대로 제가 100정도로 줘도 되는건가요? 혹시나해서..