간단한 포인터 프로그램인데요 ^^ 문제가...
봄여울
질문 제목 :간단한 포인터 프로그램인데요 ^^ 문제가... 이 프로그램은 처음에 ptr 이라는 int형 포인트 바리어블이 선언되고 malloc 을 통해 하나의
int 사이즈를 받습니다...프로그래밍을 실행을 하면 숫자를 넣을껀가 아님 보여달라가 나옵니다.
add 와 view 가 나오죠....
여기서 이제 add 를 하면 숫자를 입력하라하고 출력이 뜹니다. 자이제 다시 메인메뉴로 들어와서
다시 물어봅니다 add 와 view 를 말이죠. 자 여기서 이제 우리는 처음 선언한 인트형 포인터
바리어블이 오직 인트하나만 받는줄 압니다 그래서 제가 여기서하는건 temp 라는 인트형 포인터에
사이즈를 늘려서 포인터 리턴을해가지고 포인터 ptr 이라는 바리어블에 저장합니다....
view 도 이제 할수있겠죠....막상 프로그램을 돌려보니 약간의 에러가 나버렸습니다.....
제대로 view를 안하네요 ㅠㅠ
예로 들어서 add 를 한번 하고 view를 하면 그 숫자가 나오겠죰..
근데 두번을하면 이제 숫자가 밀리기시작해요 ㅠㅠ
질뭡; 질문 내용 : #include stdio.h
#include stdlib.hint* add(int *ptr,int ctr)//여기서 이제 숫자 넣는거에여
{
int *temp;// 템포라리 메모리
temp=malloc(sizeof(int)*(ctr+1));//지금 ptr 이가지고 있는 포인터 사이즈보다 하나 크게
int i;
if(ctr==1)//ctr==카운터 숫자세는거염 이게만약 숫자가 일이면 여기서 ptr 바리어블 하나 입력!!
{
printf(enter the number: );
scanf(%d, ptr);//하나 입력요 이게 *(ptr+0); 랑 같은거죠?!?!?
fflush(stdin);//왜 했는지 모르겠지만 이거하면 버퍼 비우는거맞죠 왜 했지 이걸....
}
for(i=0;ictr;i++)// 요 반복문은 이제 템포라리 메모리에 ptr 메모리 다넣는거에염!!!
{
*(temp+i)=*(ptr+i);//하나씩 말이죠
}
if(ctr!=1)//여긴 이제 유저한테 숫자 입력하라고 다시 1이 아니라고 한이유는 위 if 문 때문이에요
{
printf(enter the number : );
scanf(%d, (temp+ctr));//이렇게 추가!!
fflush(stdin);
}
return temp;//주소 를 리턴해여!!
}void view(int *ptr, int ctr)//여기는 이제 view(저장되있는것들을 보여주는거죱!!)
{
int i;
for(i=0;ictr;i++)// 그냥 보여주는거에여! 딴것은 없어여!!
{
printf(%d. %d\n,i+1,*(ptr+i));
}
system(pause);
}
int main()
{
int key;// key 변수 이제 이걸로 아래보시면 정하는거에여 add 나 view 선택할때
int ctr=1;
int * ptr;
ptr=malloc(sizeof(int));//분명히 인트 사이즈 하나만의 메모리를 지정했어여
main ://좀있다 goto 할려고
system(cls);
printf(i. add\nii. view\n); //1 아님 2 넣어서 골라라는거죱
printf(enter the key: );
scanf(%d, &key);//입력하고
fflush(stdin);//이건 왜했을까요 .. 근데 해도 안해도 에러는 같고
switch(key)
{
case 1:
ptr=add(ptr,ctr);// 자여기서 이제 add 함수를 불러서 ptr 과 ctr 변수를 보내염
//리턴은 되면 ptr 은 이제 인트형 2개의 메모리를 가지고있는 포인터가되고
//ctr은이제 하나증가시키고 ㅎㅎ 그래야 다음에 또 add 부를때 하나가증가되서 가죠
ctr+=1;
goto main;//main 으로 ㄱㄱㄱ
break;
case 2: view(ptr,ctr-1);//이제 2이를 선택하면 ptr안죰에있는 숫자들을 보여주어요.
goto main;//다시메인으로 ㄱㄱ
break;
default:break;
}
system(pause);
return 0;
}add 를 세번하는데요 1 하고 2 하고 3 하면
출력이
1. 1
2. 2
3. 3
이나와야되는데
1. 1
2. 112342(돌릴때마다 다르게 나와여 주소인가?)
3. 2
이렇게 나오네욤 ㅠㅠ
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2676124 | 함수선언관련 질문이에요~...털썩..수정완료 (2) | 가지 | 2024-11-24 |
2676092 | C언어 책 (2) | 아서 | 2024-11-24 |
2676065 | 웹사이트 또는 메신저 등에서 원하는 텍스트를 검사하는방법?? (1) | 모든 | 2024-11-23 |
2676033 | 배열 기초연습중 발생하는 에러 ㅠㅜ... | Creative | 2024-11-23 |
2676005 | keybd_event 게임 제어 | 영글 | 2024-11-23 |
2675900 | 진짜기본적인질문 | 글길 | 2024-11-22 |
2675845 | 수정좀해주세요ㅠㅠㅠ | 해골 | 2024-11-21 |
2675797 | 병합 정렬 소스 코드 질문입니다. (2) | 도래솔 | 2024-11-21 |
2675771 | 큐의 활용이 정확히 어떻게 되죠?? | 해긴 | 2024-11-21 |
2675745 | 도서관리 프로그램 질문이요 | 도리도리 | 2024-11-20 |
2675717 | 2진수로 변환하는것! (3) | 동생몬 | 2024-11-20 |
2675599 | for문 짝수 출력하는 법 (5) | 널위해 | 2024-11-19 |
2675575 | Linux 게시판이 없어서.. | 첫삥 | 2024-11-19 |
2675545 | 구조체 이용할 때 함수에 자료 넘겨주는 것은 어떻게 해야 하나요? | 아연 | 2024-11-19 |
2675518 | 사각형 가로로 어떻게 반복해서 만드는지좀.. 내용 | 신당 | 2024-11-18 |
2675491 | !느낌표를 입력하는것은 어떻게합니까~~?ㅠㅠ (5) | 사지타리우스 | 2024-11-18 |
2675411 | 파일입출력으로 받아온 파일의 중복문자열을 제거한 뒤 파일출력 | 앨버트 | 2024-11-17 |
2675385 | 링크드리스트 주소록 질문드립니다. (1) | 겨루 | 2024-11-17 |
2675356 | 2진수를 10진수로 바꾸려고 하는데 막히네요.. | 풀잎 | 2024-11-17 |
2675297 | Prity 비트 발생기 | 한란 | 2024-11-16 |