(C언어)포인터 값 대입(재등록)
설아
질문 제목 : (c언어)포인터 값 대입(재등록)
포인터 값이 제대로 들어가질 않아요..ㅠㅠㅠ
질문 내용 :
먼저 소스먼저 보여드리겠습니다.
//////////////main.c////////////////
#include stdio.h
#include test1.h
int main(void)
{
menu();
return 0;
}
//////////////test1.h////////////////
typedef struct test
{
char* name;
int num;
} test;
test* testinit();
void menu();
//////////////test1.c////////////////
#include stdio.h
#include test1.h
#include test2.h
test* testinit()
{
static test t[10] = {{a, 1}, {b, 2}};
test* ptest = t;
return ptest;
}
void menu()
{
int sel;
while(1)
{
printf(목록출력 1, 추가 2, 종료 3 : );
scanf(%d, &sel);
if(sel == 1)
{
testshow();
}
else if(sel == 2)
{
testadd();
}
else
{
break;
}
}
}
//////////////test2.h////////////////
void testshow();
void testadd();
//////////////test2.c////////////////
#include stdio.h
#include test1.h
void testshow()
{
int i;
test* ptest = testinit();
for(i = 0; i 10; i++)
{
printf(%s %d\n, ptest[i].name, ptest[i].num);
}
}
void testadd()
{
int i, num;
char name[100];
test* ptest = testinit();
for(i = 0; i 10; i++)
{
if(ptest[9].name != 0)
{
break;
}
else
{
if(ptest[i].name != 0)
{
continue;
}
else
{
printf(이름 : );
scanf(%s, name);
printf(번호 : );
scanf(%d, &num);
ptest[i].name = name;
ptest[i].num = num;
break;
}
}
}
}
위와같이 코딩후실행해보았습니다.실행후 1번을 눌러 목록을 확인한 후, 2번을 눌러 이름과 번호를 추가하고 다시 1번을 눌러 목록을 출력해보았습니다.
그런데 번호의 값은 제대로 들어갔는데 이름 값은 들어가지 않았습니다.
test2.c의 ptest[i].name = name; 이부분에 문제가 있습니다.
아래줄의 ptest[i].num = num은 num의 값을 전달해 주기때문에 남아있지만
ptest[i].name = name;는 주소값이 전달되기때문에 해당함수 호출후 값이 소멸된다는 것입니다.
그래서 이부분을 해결해보고 싶은데 어떻게 고쳐야될지 모르겠습니다. 알려주세요ㅠㅠㅠㅠㅠ
-
여름
그렇게해봐도안되네요ㅠㅠㅠ쪽지확인부탁드려영
-
겨루
scanf(\%s\
-
CreamyGirl
아.. 퇴근중 스마트폰이라..
생각해보니 2차배열이 필요 없네요 그냥 1차 배열만 써도 어차피 구조체를 여러개 쓰니까요 -
비예
음2차원배열로 선언해서 어떤식으로 사용해야되죠??
-
에드문드
포인터 까지 왔는데 동적할당은 아는지 모르겠네요..
동적할당이 아니면 T.name 을 구조체에서 포인터가 아닌 2차배열로 사용 하시는건?
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2695766 | 달팽이 배열 어디서 틀렸는지 모르겠습니다ㅠㅠ | 연분홍 | 2025-05-23 |
2695738 | fopen과fclose질문~~ (5) | 희선 | 2025-05-23 |
2695707 | 3의 배수 나타내기. (2) | 수리 | 2025-05-23 |
2695626 | 피보나치수열 과제 때문에 질문 드립니다. (6) | 옆집언니 | 2025-05-22 |
2695595 | 포인트공부중입니다 int형에서 4=1 인가요? (3) | 족장 | 2025-05-22 |
2695567 | 드라이브 고유번호를 가져오는 함수 (2) | 초코맛사탕 | 2025-05-21 |
2695533 | 음수의 산술변환! 질문이요 ㅠㅠ... (4) | 꽃여름 | 2025-05-21 |
2695506 | 구조체 배열 이용 도서목록 출력 프로그램 (1) | 가을귀 | 2025-05-21 |
2695450 | c언어 함수 질문이요.... | 이슬비 | 2025-05-20 |
2695403 | VirtualAlloc함수 및 메모리 질문 | 크리에이터 | 2025-05-20 |
2695355 | c언어 for함수 | 미쿡 | 2025-05-19 |
2695327 | 안녕하세요 제가 이번에 좀 큰 프로그램을.. | 악당 | 2025-05-19 |
2695295 | mutex동기화의 thread기반 채팅 서버소스 질문입니다 | 그루터기 | 2025-05-19 |
2695270 | 질문이요..swap 관한겁니다..ㅠㅠ (3) | 콩알녀 | 2025-05-19 |
2695244 | 노땅초보궁금한게 하나 있는데요..반복문(while문)초보자질문 (6) | 큰꽃늘 | 2025-05-18 |
2695166 | do while 문 어떤것이잘못된건지 모르겠어요 (2) | 아이폰 | 2025-05-18 |
2695122 | 구조체에 대해 물어보고 싶은게 있습니다 ^^^.. (7) | 수련 | 2025-05-17 |
2695091 | txt 파일 입출력 후 2차 배열에 저장하기입니다. (3) | 헛장사 | 2025-05-17 |
2695063 | 수도요금 프로그램좀 짜주세요. | 시내 | 2025-05-17 |
2695033 | 답변좀요ㅠㅠ (1) | 비사벌 | 2025-05-16 |