[질문] 배열 공부중에... 너무너무 안풀려서 질문드립니다.
글쓴이: eomht / 작성시간: 월, 2005/10/31 - 1:01오전
안녕하세요.
배열 공부중인데... 처음에는 도움받는것 보다 풀어보는게 낫다고 생각하여 끙끙대다가... 이 문제 가지고 3일간 도전하다 안되서 글을 남깁니다.
ㅠ_ㅠ
void main() { FILE * fin; char HHH[30]; char * AAA[30]; fin=fopen("read.dat", "r"); for( int i=0 ; fgets(HHH, 30, fin) ; i++) { AAA[i]=HHH; printf("Number %d : %s", i+1, AAA[i]); if ( i == 1 ) printf("for문 내에서 조사된 AAA[0] : %s", AAA[0]); if ( i == 2 ) printf("for문 내에서 조사된 AAA[1] : %s", AAA[1]); } fclose(fin); } read.dat 에 있는 파일내용. 가나다라마 하하하하하 파파파파파
자 결과는...
Number 1 : 가나다라마
Number 2 : 하하하하하
for문 내에서 조사된 AAA[0] : 하하하하하
Number 3 : 파파파파파
for문 내에서 조사된 AAA[1] : 파파파파파
이렇게 나옵니다.
제가 어떤 식으로 만들었나면은, 파일내에 있는 저 문자열
가나다라마
하하하하하
파파파파파
을 각각 AAA[0] = 가나다라마, AAA[1] = 하하하하하, AAA[2] = 파파파파파 를 넣으려고 하였습니다.
그런데 저렇게 만든 후에는 AAA[0 부터 2] 모두다 파파파파파 가 들어갑니다.
어떻게 하면 각각 제대로 넣을수가 있습니까?
아 그리고 AAA[i]=HHH; 대신 strcmp(AAA[i], HHH) 이건 왜 안되는지... 도 궁금합니다.
많은... 도움 부탁드리겠습니다. ㅠ_ㅠ
Forums:
HHH에 값을 읽고 AAA의 각 원소에 모두 HHH의 포인터를 넣으셨으니
HHH에 값을 읽고 AAA의 각 원소에 모두 HHH의 포인터를 넣으셨으니 모두 똑같은 값을 가지고 되겠지요.
위와같은 형태를 원하신다면 char AAA[30][30] 으로 하시는 게 맞을 것 같습니다.
[quote="xster"]HHH에 값을 읽고 AAA의 각 원소에 모두
죄송합니다만 제 돌머리로는 이해가 되지 않습니다. ㅠ_ㅠ
AAA[0]=HHH 이런식으로 직접줘서, HHH의 포인터가 바뀔때(???) 마다 다른 원소에 연결한건데, 똑같은 값이 들어가게 되나요? ㅠㅠ
남에게 이길 수 있다고 생각하는 것은 자만이지만,
노력해서 이길 수 있다고 생각하는 것은 야망이다.
_____________________________
음 일단 배열과 포인터에 대해서 다시 공부하시는게 좋을 거 같네요.코
음 일단 배열과 포인터에 대해서 다시 공부하시는게 좋을 거 같네요.
코드를 보면 배열과 포인터에 대해서 잘 이해하고 계시다고 생각되지 않는군요.
에서 HHH는 30개의 char를 저장할 수 있는 배열입니다.
AAA는 30개의 char 포인터를 저장할 수 있는 배열입니다.
즉 포인터 값에 대한 배열은 만드셨지만 실제 그 포인터에 연결될 char배열은 하나만 선언하신것입니다.
위에 xter님이 설명하신대로 AAA[30][30]으로 선언하셔야 원하시는 결과를 얻으실 겁니다.
메모리 상에서 보면
형태로 연결되어 있는 상태입니다.
------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!
[quote="cronex"]음 일단 배열과 포인터에 대해서 다시 공부하
감사합니다 ㅠ_ㅠ 아주 기초적인 생각을 못한것 같습니다... ㅠ_ㅠ
예전엔 이럴때면... 괜찮아. 군대 다녀오면 원래 돌머리 되는거야. 라고 넘기지만... 생각해 보면 벌써 제대한지 1년이 넘었다는...(꽥 ㅠ_ㅠ)
그냥 자만하지 말구 포인터랑 배열 관계부터 다시 책장을 넘겨야 되겠습니다 ^_^; 간단한 정리도 안하고 무작정 만들려고 했다니 ㅠ_ㅠ(도전정신? ^^)
남에게 이길 수 있다고 생각하는 것은 자만이지만,
노력해서 이길 수 있다고 생각하는 것은 야망이다.
_____________________________
댓글 달기