• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

redefinition; different basic types 오류

20.12.15 22:21 작성 조회수 637

2

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

#define CAPACITY 100
#define BUFFER_SIZE 20 

char* names[CAPACITY];			/*names*/
char* numbers[CAPACITY];		/*phone numbers*/
int n = 0;						/*number of people in phone directory*/

void add();
void find();
void status();
void remove();

int main(void) {
	char command[BUFFER_SIZE];
	while (1) {
		printf("$ ");
		scanf("%s", command);
		if (strcmp(command, "add") == 0)
			add();
		else if (strcmp(command, "find") == 0)
			find();
		else if (strcmp(command, "status") == 0)
			status();
		else if (strcmp(command, "delete") == 0)
			remove();
		else if (strcmp(command, "exit") == 0)
			break;
	}
	return 0;
}

void add()
{
	char buf1[BUFFER_SIZE], buf2[BUFFER_SIZE];
	scanf("%s", buf1);
	scanf("%s", buf2);

	names[n] = _strdup(buf1);
	numbers[n] = _strdup(buf2);
}

void find()
{
	char buf[BUFFER_SIZE];
	scanf("%s", buf);

	int i;
	for (i = 0; i < n; i++) {
		if (strcmp(buf, names[i]) == 0) {
			printf("%s\n", numbers[i]);
			return;
		}
	}
	printf("No person named '%s' exists.\n", buf);
}			

void status() {
	int i;
	for (i = 0; i < n; i++)
		printf("%s  %s\n", names[i], numbers[i]);
	printf("Total %d persons.\n", n);
}

void remove()
{
	char buf[BUFFER_SIZE];
	scanf("%s", buf);

	int i;
	for (i = 0; i < n; i++) {
		if (strcmp(buf, names[i]) == 0) {
			names[i] = names[n - 1]; 
			numbers[i] = numbers[n - 1];
			n--; 
			printf("'%s' was deleted successfully.\n", buf);
			return;
		}
	}
	printf("No person named '%s' exists.\n", buf);
}

답변 2

·

답변을 작성해보세요.

2

오종화님의 프로필

오종화

2020.12.25

이거 아마 c언어에서 remove()라는 같은 이름의 함수가 있기 때문에 안되는 걸거에요. 저도 안되서 함수명을 remover()로 조금 다르게 하니까 잘 되더라구요

0

fe님의 프로필

fe

질문자

2020.12.15

전화번호부 v1.0 코드를 그대로 작성하였는데

'remove' : redefinition; different basic types

이라고 remove함수에서 재정의(?)에러가 뜨는데 아무리 봐도모르겠씁니다...