Q1. 여기서 널문자 만나면 끝내려고 str[i] == '\0' 을 했는데 여기서 큰따옴표를 쓰면 제대로 실행이 안되더라구요
문자가 하나면 작은따옴표, 두개이상이면 큰따옴표 쓰라고 어디서 배운 것 같은데 이거 차이가 뭔가요 ? 그리고 왜 차이를 둔건가요 ?
Q2.이거는 제가 옛날에 짯던 소스같은데 종료할떄 조건문으로 str[i]로 넣어놨더라구요 지금 생각해보면 무슨 의미인지 기억이 안나는데
저거는 무슨 의미인가요? 그냥 끝까지 돌리라는 의미인가요 ?
C언어 복습중에 프린이라 모르는게 많아서 질문 드립니다 답변해주신 분 모두 감사합니다.
Q3. 그리고 이렇게 하면 안되던데 왜 안될까요 ?
큰따옴표는 문자열인데 문자열은 0에서 끝나니 문자열에 0만 넣으면 문자열 길이가 0이 되지
Q1. 문자와 문자열 검색. Q2. 문자열의 끝까지 검색. Q3. str[i] != '₩0'으로 변경
형님 2번에서 그러면 널문자가 아니라 str[10000] = "adad" 했어도 10000까지 돌고 끝낸다는거죠 ?
ㄴㄴ ₩0가 나올 때 까지 검색하니까 4번 돌고 끝남
str[i] 인데 왜 그렇게 인식하는건가요 ? c에서 1000개를 할당해줬어도 4글자만 넣어주면 str[4] 로 인식하는건가요 ?
배열의 초기값은 0이고 이는 ₩0임 10000개의 공간이 ₩0로 채워졌고 니가 문자를 4개만 넣었으니 0, 1, 2, 3만 해당 문자로 값이 바뀌고 5~10000는 ₩0니까 4번만 돌음
아 3번은 for문 조건식이 참일때만 돌아가는거니까 str[i] !\ '\0' 이겠네요 개념실수 ㅈㅅㅈㅅ
str[i] != '\0' 이나 str[i] 나 그러면 똑같은거네요 ?
형님 하나 더 궁금한게있는데 그러면 int str[100] = {} 했을때 400바이트의 메모리를 할당해주는게 아니라 이때는 그냥 0바이트인가요? 널문자로 채워져있는 메모리는 용량 계산안한다(?) 라고 이해하면되는거맞나요 ?
하나 더 궁금한게있는데 for 조건식이 참일때만 돌아가잖아요 str[i] 라고만 넣어주면 이게 참 거짓을 판별할 식이 안되는데 컴퓨터에서 어떻게 널문자를 만나면 그만하는건가요? 이건 c언어의 약속같은건가요 ?
1. 공간은 씀. 2. if('₩0')랑 if(0), if('a') 한번 씩 해봐
다 작동은 똑바로 하는 것 같아요 a는 a를 넣어주면 탈출해버리구요
근데 문자열이면 결국 0(\0)으로 끝을 판단하기 때문에 str[i]를 종료조건으로 설정해도 문제없는거 아니냐 - dc Cpp
거의 isTrue != false 보는느낌인데 - dc Cpp
ㅇㅇ str[i] != '\0' 이나 str[i] 랑 같은 의미인 것 같은데 str[i] 가 널문자일때 왜 포문을 탈출하는지가 궁금합니다
boolean 대신 숫자를 넣으면 0은 거짓이고 0이 아니면 참임
사실 C에서 boolean 자체가 숫자로 변환됨
boolean을 제가 쓴적이 없는데 무슨말인가요 ?
for 조건식의 참 거짓 판별 얘기임
널문자도 0으로 인식하나요?
그래서 str[i] 넣었을 때 널문자 만나면 for문이 종료되는건가요 ?
널문자라는게 따로 있는게 아님 그냥 바이트 단위로 0으로 읽히는게 널문자지
널문자는 바이트가 0인거지 0이 아닌데 왜 종료하는건가요 빡대가리라 죄송합니다 ㅠ
조건문이 0이면 조건문 종료하는 것은 알겠는데, 널문자가 0이랑 다른거 아닌가요? 숫자0과 , 바이트가0인 널문자 이렇게 두개의 0 이있다고 알고있는데 틀린건가요 ?