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[넘버]\
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2653883 | 구조체 질문이요.. 연결리스트. (1) | 별 | 2024-05-05 |
2653802 | 배열에 저장된 데이터와 원하는 데이터비교하는것좀.. | 리카 | 2024-05-05 |
2653727 | 고수님들 봐주세요~ (2) | 아담 | 2024-05-04 |
2653702 | C언어 의 단계가 어떻게 되나요???????????????? (3) | 길가온 | 2024-05-04 |
2653645 | 저....while인데..이게무슨뜻인지좀.. | 설희 | 2024-05-03 |
2653613 | 성별변수 | 뿡뿡 | 2024-05-03 |
2653584 | 16진수 변환 관련 질문 드립니다. | 매미꽃 | 2024-05-03 |
2653557 | 한글 완성형과 조합형의 전환 | 해지개 | 2024-05-02 |
2653506 | void형 포인터 이해안가요 ㅠㅠ (2) | 뭘봐요 | 2024-05-02 |
2653482 | 패턴매칭에 대한 질문하나 올립니다 | 미투리 | 2024-05-02 |
2653452 | main 함수 매개변수 문의드립니다. (2) | 딥레드 | 2024-05-01 |
2653425 | 간단한 포인터 설명좀 해주세요 ㅠㅠㅠ | 차분나래 | 2024-05-01 |
2653400 | 플로우 차트 작성 질문입니다. (2) | 아인 | 2024-05-01 |
2653370 | c언어 해석 부탁드립니다 ㅠ | 악당 | 2024-05-01 |
2653345 | 분수의 덧셈 질문이요 | 하늘 | 2024-04-30 |
2653313 | //정수 n을 입력받아 1부터 n까지의 합을 구하는 프로그램// (6) | 거북이 | 2024-04-30 |
2653284 | 알파벳 변수 관련(배열에서) | 나슬 | 2024-04-30 |
2653260 | C언어 scanf인데.. | 찬누리 | 2024-04-30 |
2653230 | 한글로 해석부탁드립니다. (1) | BlackCat | 2024-04-29 |
2653142 | 질문드립니다.. 부탁드립니다.. | 머슴밥 | 2024-04-29 |