그래서 C가 프로그램을 종료 할 때마다 데이터가 저장되는 주소록을 작성하는 임무가 있습니다. 따라서 파일을 사용해야합니다. 또한 주소록 파일에서 이미 존재하는 항목을 읽어야합니다. 프로그램은 이름, 성, 이메일 등으로 정렬 할 수있는 옵션도 제공해야합니다.연결된 목록을 사용하여 주소록을 만들려면 어떻게해야합니까?
나는 이것을 연결 목록을 사용하여 구현할 생각이었습니다. 문제는 연결된 목록이나 해시 테이블을 사용해야하는지 잘 모르겠다는 것입니다. 해시 테이블을 사용하면 데이터를 정렬 할 수있는 방법을 정확히 알지 못하기 때문입니다. 연결된 목록을 사용하고 포인터를 다음 항목으로 변경하여 정렬 만해도 괜찮습니까?
그래도 질문이 하나 더 있습니다. 예를 들어, 사용자로부터 fgets()
을 사용하여 그의 이름을 얻은 다음 나중에이 파일을 fprintf (Addressbook, "Name: %s", addressbook.name);
과 같이 인쇄한다고 가정 해 보겠습니다. 파일에서 읽고 기존 항목을 내 연결된 목록에로드하려고 할 때 파일에있는 "이름 :"부분을 어떻게 제외할까요?
예를 들어 사용자가 "Chris"라는 이름을 입력하면 Name: Chris
과 같은 파일에 기록됩니다. 그러나 프로그램을 닫고 다시 실행하면 파일에서 읽고 "Chris"라는 이름을로드하려는 경우에만 addressbook.name
에 넣습니다. 전반적으로 파일에서 읽는 것과 꽤 혼동 스럽습니다. 연결된 목록을로드하는 것이 일반적입니다.
도움이 될만한 정보가 있으면 감사하겠습니다. 시간 내 주셔서 감사합니다!
두 번째 질문에 대해서는 * 이름 *'*을 처음에는 파일에 넣지 않는 것이 어떨까요? 당신은 어떤 보고서 파일을 쓰고 있지 않다. 그것의 데이터 저장 파일. * 프로그램 *에 'Name :'을 표시하고 싶다면 그 중 하나지만, 특히 디스크가 필요없는 경우 디스크에 해당 중복을 덤프하는 것은 거의 볼 수 없습니다. – WhozCraig
물어보기 전에 적어도 _something_ 해보신다면 더 좋지 않겠습니까? 그렇다면 지금까지 시도한 것을 보여줄 수 있고 imporvements에 대해 질문 할 수 있습니다. 훨씬 더 흥미로운 토론을 할 수 있습니다. – ryyker
파일을 사용하는 이유는 무엇입니까? 솔직히 정리 기능을 제공해야하기 때문에 단순히 데이터베이스를 사용하는 것이 더 쉽지는 않을 것입니다. MySQL C API는 어쨌든 배우기가 꽤 쉽습니다. –