作成した電話帳アプリケーションにmallocを追加しようとしていますが、Cは初めてなので、自分が行っていることが正しいかどうかわかりません。小さな問題に遭遇しましたが、私が持っている初心者向けの本を読みました、そしてそれは私が望むほど詳細には行きません、私は私がただであるかどうかグーグルを検索することによってわかりません私がmallocを設定する方法、または私が見逃した何かがある場合は完全に間違っています。
基本的に私が持っているのは私の構造の4つのFirst_Name
配列Last_name
、、、、home
ですcell
。それぞれに2つの機能があります。ユーザーから情報を取得する機能と、ユーザー情報を印刷して電話帳に追加する機能です。私が今持っているのは、電話帳に名を追加するだけの元のコードの小さな断片です(したがって、コード全体ではありません)。ユーザー入力を取得する各関数に、malloc関数を追加します。現在、名前とmallocを設定しているだけですが、電話帳をチェックして名前が正常に入力されたかどうかを確認すると、プログラムが終了するという問題があります。mallocを取り出すと、正常に動作します。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#define BUFFER 50
//Structure for contacts
typedef struct friends_contact {
char *First_Name;
char *Last_Name;
char *home;
char *cell;
} fr;
void menu(fr * friends, int *counter, int user_entry, int i);
void setFirst(fr *, int *, int i);
char getFirst(fr *, int i);
void add_contact(fr * friends, int *counter, int i);
void print_contact(fr * friends, int *counter, int i);
int main()
{
int user_entry = 0;
fr *friends;
int counter = 0;
int i = 0;
menu(friends, &counter, user_entry, i);
getch();
return 0;
}
//Menu function
void menu(fr * friends, int *counter, int user_entry, int i)
{
do {
int result;
printf("\nPhone Book Application\n");
printf
("1) Add friend\n2) Delete friend\n3) Show a friend\n4)Showphonebook\n5)Exit\n");
scanf("%d", &user_entry);
if (user_entry == 1) {
add_contact(friends, counter, i);
}
if (user_entry == 2) {
}
if (user_entry == 3) {
}
if (user_entry == 4) {
print_contact(friends, counter, i);
}
} while (user_entry != 5);
}
void setFirst(fr * friends, int *counter, int i)
{
// THE MALLOC FUNCTION!
friends = (fr *) malloc(BUFFER * sizeof(fr));
printf("Enter a first name \n");
scanf("%s", friends[*counter].First_Name);
if (friends != NULL) {
free(friends);
}
}
char getFirst(fr * friends, int pos)
{
printf("%s ", friends[pos].First_Name);
return *friends[pos].First_Name;
}
void add_contact(fr * friends, int *counter, int i)
{
setFirst(friends, counter, i);
(*counter)++;
}
void print_contact(fr * friends, int *counter, int i)
{
for (i = 0; i < *counter; i++)
if (strlen(friends[i].First_Name)) {
getFirst(friends, i);
}
}
ここで私を助けることができる人に大きな緑色のチェックマークを付けることを探しています。