간단한 포인터 프로그램인데요 ^^ 문제가...
봄여울
질문 제목 :간단한 포인터 프로그램인데요 ^^ 문제가... 이 프로그램은 처음에 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
이렇게 나오네욤 ㅠㅠ
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |
2691697 | if 문에서 구조체 배열에 저장되있던 문자열 검사하는 법 ? (2) | 민트맛사탕 | 2025-04-16 |
2691678 | C언어 함수 질문이요~!!! | 연보라 | 2025-04-15 |
2691650 | 반복문 | 돋가이 | 2025-04-15 |
2691618 | 링크드리스트 개념 질문이예요 (3) | 맨마루 | 2025-04-15 |
2691592 | 동적할당 이용 배열선언 질문입니다.ㅠㅠ (3) | 허리달 | 2025-04-15 |
2691542 | /=의 용도를 알려주세요 ㅠㅠ! (2) | 아라 | 2025-04-14 |
2691510 | sizeof 연산자 질문입니다 (2) | 종달 | 2025-04-14 |
2691483 | 파일 오픈시 에러 질문드립니다. (2) | 호습다 | 2025-04-14 |
2691450 | [visual c++ 툴]기초 질문 (3) | 해긴 | 2025-04-13 |