안녕하세요.
C언어 독학중인 학생입니다.
공부 중 막히는 부분이 있어 물어볼 곳이 없어서..
질문하나만 해도 될까요?
char* string[2]={"republic", "republic of korea"};
printf("%s %s \n", string[0], string[1]+9);
요러한 구조에서요 string이라는 포인터 배열이
string[0]안에 republic의 주소가 들어가있고
string[1]안에 republic of korea의 주소를 담고 있다고 알고있습니다.
근데 string[1]+9라는 의미가 정확하게 와닿지가 않네요..
string[1]이라는 큰 포인터 박스안에서 문자열을 9칸 건너뛰어서 of korea부터 출력이되는것인지,
string[1]이
r
e
p
u
b
l
i
c
o
f
k
o
r
e
a
요렇게 문자가 각각 개별적으로 배열된 구조에서 처음 r부분의 주소를 기준으로 9칸 건너뛰어서 o부터 출력이 되는 것인지.. 헷갈립니다.
제가 워낙 지식이 없다보니 이상한 질문이 되어버린 것 같은데..
문자열이나 포인터에 대한 개념이 부족한걸까요? 책을 다시 뒤져보지만 쉽게 해답을 얻을 수 없어 질문글 올립니다!
자세히는 안봐서 모르겠다만 2개의 문자열을 합치는거니? republic 이 8문자고 마지막에 문자열 끝을 나타내는 \\n이 들어 있으니깐 +9 한거 같다.
질문해도 좋은데 은꼬르 들고와라
후자
거칠게 \\n 아니라 white space
string[1] 이면 r 부터 출력하잖아. 차근차근 따라나가봐봐. 거기에 +1 이면 e 가 나오겠지? 그러다가 +8 을 하면 뭐가되? 공백이잖아?
합치는것이긴한데요~ republic을 string[0]에서 가져오고 string[1]에서는 republic of korea에서 repubic을 건너뛰는 의도였습니다.
republic of 부분만 보면 republic 과 of 사이에 공백(white space)가 있기때문에 +9 를 한거겠지.
+8 을 한다면
은꼴 조공 없으면, 나도 대답 안한다능. 기브 앤 테이크 아니냐능
엔투// 아! 알겠습니다 정말 감사합니다 ^^
배웠다능
printf(\"%s%s\", string[0],string[1]+8); 해보면 되겠지. 직접안해봐서 모르겠지만 내 생각은 그래
다음부턴 은꼬르 들고올게용
엔투횽 담부터 그러지 말라능
ㄴ 이거는 공백까지 합쳐주는거고. 너의 소스에서는 printf 문에서 %s_%s 이렇게 띄어주고 있으니까 공백을 합칠 필요가 없어서 +9
밥쳐// C 관련해서는 가르쳐주면서 나도 배우고 뭐 일석이조라 생각해서 ㅎㅎ 조공없으니 아쉽긴하지만 ... 뭐 그럼 프갤에 조공없는 C 질문은 제가 맡아봄.
엔투횽 안돼 그러면 진짜 쥐뿔도아닌거로 프갤 달려오는 과제거지들 너무 많아져
솔직히 이글싼횽도 책을 다뒤져본건 구라겠지만 그냥 너무 말이 정중하길래.. 내가 속았구나!