strcmp함수 사용 관련,동적영역메모리접근관련 질문..이요.
민서
strcmp함수 사용 관련,동적영역메모리접근관련 질문..이요.
이전 글에도 올렸구 ; 같은 코드 내용이긴합니다만.
win32에서 사용자로부터 name,T_num에 대한 입력,검색, 삭제, 전부 보여주기 등 기능들을 하는 코드 인데요.
여기서 검색부분, search();함수가 이상하네요. 실행시에 3번을 눌러 이 함수를 부를떄에만 에러가 뜨네요,..;
그래서 search함수에
for(i=0;irootsize;i++)
{
if(0==strcmp(parr,root[i]-name))
printf(찾고자하는 파일: %s[이름] %s[넘버],root[i]-name,root[i]-T_num);
}
이것을
for(i=0;irootsize;i++)
{
if(0==strcmp(parr,root[i]-name)){
printf(찾고자하는 파일: %s[이름] %s[넘버],root[i]-name,root[i]-T_num);
break;
}
}
이라고 하니까 되더군요..
왜 위의 코드로 하면 오류가 나는 걸까요? // 삭제 함수도 위와 같은 증상을 보이더군요.
질문 내용 :
#include stdio.h
#include stdlib.h
#include string.h
#include conio.h
struct data{
char name[10];
char T_num[10];
//struct data** pmem;
};
typedef struct data MEM;
MEM** root;
int rootsize=5,index=0;
void insert(void);
void delet(void);
void search(void);
void print(void);
void extensize(void);
int main(void)
{
//MEM man1;
int sw,n=0,i=0;
//char bname[10],bT_num[10];
root=(MEM**)malloc(rootsize*sizeof(MEM));
for(i=0;irootsize;i++)
root[i]=NULL;
while(1){
printf(---------Menu---------\n);
printf( 1.Insert\n);
printf( 2.Delete\n);
printf( 3.Search\n);
printf( 4.Print All\n);
printf( 5.Exit\n);
printf(Choose the item:);
scanf(%d,&sw);
switch(sw)
{
case 1:
insert();
break;
case 2:
delet();
break;
case 3:
search();
break;
case 4:
print();
break;
case 5:
n++;
break;
}
if(n!=0)
break;
}
free(root);
while(!kbhit());
return 0;
}
void insert(void){
int i;
char pname[10];
char pT_num[10];
MEM* temp;
temp=(MEM*)malloc(sizeof(MEM));
printf(Input name);
scanf(%s,pname);
printf(Input Tel number:);
scanf(%s,pT_num);
strcpy(temp-name,pname);BRame);
strcpy(temp-T_num,pT_num);
for(i=0;irootsize;i++)
{
if(root[i]==NULL)
{ root[i]=temp;
break;
}
}
index++;
if(rootsize==(index+1))
extensize();
}
void extensize(void)
{
int exSize=rootsize+3;
MEM **Rtemp=(MEM**)malloc(sizeof(MEM)*exSize);
int i;
for(i=0;iexSize;i++)
Rtemp[i]=NULL;
for(i=0;irootsize;i++)
Rtemp[i]=root[i];
//free(root);
root=Rtemp;
rootsize+=3;
}
void delet(void)
{ int i;
char parr[10];
printf(지울 파일의 이름을 입력하시오:);
scanf(%s,parr);
for(i=0;irootsize;i++)
{
if(0==strcmp(parr,root[i]-name))
root[i]=NULL;
}
}
void search(void)
{
int i;
char parr[10];
printf(찾을 파일의 이름을 입력하시오:);
scanf(%s,parr);
for(i=0;irootsize;i++)
{
if(0==strcmp(parr,root[i]-name))
printf(찾고자하는 파일: %s[이름] %s[넘버],root[i]-name,root[i]-T_num);
}
}
void print(void){
int i;
for(i=0;irootsize;i++)
{
if(root[i]!=NULL)
printf(입력된 값 %d번쨰:%s[이름],%s[넘버]\n,i,root[i]-name,root[i]- T_num);
}
}
-
큰마루 2024-04-26
malloc 함수로 메모리를 할당을 받으면
delet 함수에서 지울 경우에 free로 메모리를 돌려줘야 됩니다.
반복문에서 에러가 나는 경우는
for(i=0;irootsize;i++)
{
if ((root[i] != NULL) && (0==strcmp(parr,root[i]-name)))
printf(\찾고자하는 파일: %s[이름] %s[넘버]\
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2655361 | 엔터 입력받을때까지 기다리는 getchar (1) | 큰모음 | 2024-05-19 |
2655328 | 함수에서 포인터 (3) | 모아 | 2024-05-18 |
2655299 | 아이콘바꾸는법..? | 소 | 2024-05-18 |
2655271 | scanf 입력받으면 쭉 실행되는.. (5) | ComeOn | 2024-05-18 |
2655184 | 이 세개 프로그램좀 해결해주실.... 고수님들???? (3) | 말달리자 | 2024-05-17 |
2655129 | 다차원 배열 원소들 주소계산하는거 질문이요~ | 터전 | 2024-05-17 |
2655103 | AVRstudio MoveAxis. MoveLine 함수질문 | 앨버트 | 2024-05-16 |
2655072 | 콘솔창의 위치와 크기를 정하고 싶습니다. | 딥레드 | 2024-05-16 |
2655044 | 자료구조랑 online judge site에 대해서 질문있습니다... (1) | 뽀송뽀송 | 2024-05-16 |
2655016 | 별찍기 문제 중 이해안되는 부분이 있어요... | 도전중 | 2024-05-16 |
2654986 | 입력받은 성적을 배열에 저장하기 (3) | 안녕나야 | 2024-05-15 |
2654959 | ===========-이런거 미리 지정하는법 (1) | 김자영 | 2024-05-15 |
2654930 | 도와주십시요 ㅜㅜ 자료구조 ㅜㅜ | 도널드 | 2024-05-15 |
2654881 | PID 모듈 검색 부분 질문합니다 . | 이름없음 | 2024-05-14 |
2654850 | 조건에 만족하는 다음 수를 찾고 싶습니다. | 초엘 | 2024-05-14 |
2654790 | 두파일간 byte단위 txt파일 복사 中 | 슬찬 | 2024-05-14 |
2654768 | 사전만들기 입니다. | 여우By | 2024-05-13 |
2654716 | c언어 고수님들 답좀적어주세요 급합니다 ㅠㅠ | 한말글 | 2024-05-13 |
2654688 | c언어 ㅠㅠ 너 무 어려 워요 ㅠ 도와주세요!! | 별빛 | 2024-05-13 |
2654659 | 구구단 소스 궁금한 점 도움 부탁드립니다! (2) | 미련곰팅이 | 2024-05-12 |