-1

私はクラスの追加クレジット プロジェクトに取り組んでおり、仕様は次のとおりです。

  • ac プログラムを作成します (設計ツールを使用する必要がありますが、見たくありません)。
  • プログラムは動的メモリを使用してリンクされたリストを作成します (ARRAYS PERMITTED は許可されません)。
  • プログラムは無制限の数の生徒の記録を保存します (RAM によってのみ制限されます)。
  • 学生レコードは、学生名と年齢で構成されます。これを機能させるには、さらに 2 つのフィールドを追加する必要がある場合があります。
  • プログラムには、ユーザーがレコードを追加する方法があります。
  • プログラムには、ユーザーがすべてのレコードを表示する方法があります (画面にのみ、並べ替えは必要ありません)。
  • プログラムを終了する方法が必要です。

すべてのコードが完成しましたが、この厄介なエラーが発生しています。これはまさに私のコンピューターで表示されるものです。

1>linkedProject.obj : error LNK2019: unresolved external symbol _add referenced in    function _main
1>E:\Spring 2013\C Programing Class\linkedProject\Debug\linkedProject.exe : fatal error LNK1120: 1 unresolved externals

そして、ここに私のコードがあります:

#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#define pause system ("pause")

// prototype variables
struct node * initnode(char*, int);
void printnode(struct node*);
void printflist(struct node*);
void add(struct node*);
struct node* searchname(struct node*, char*);

struct node{
    char name[20];
    int age;
    struct node *next;
};

struct node *head = (struct node*) NULL;
struct node *end = (struct node*) NULL;

struct node* initnode(char *name, int age){
    struct node *ptr;
    ptr = (struct node*) calloc(1, sizeof(struct node));
    if(ptr == NULL) 
        return (struct node*) NULL;
    else {
        strcpy(ptr->name, name);
        ptr->age = age;
        return ptr;
     }
}

void printnode(struct node *ptr) {
    printf("Name -> %s\n", ptr->name);
    printf("Age -> %d\n", ptr->age);
}

void printlist (struct node *ptr) {
    while (ptr != NULL) {
        printnode(ptr);
        ptr = ptr->next;
    }
}



main() {
    char name[20];
    int age, choice = 1;
    struct node *ptr;
    while(choice != 3){
        system("cls");
        printf("1. Add a name\n");
        printf("2. List all names\n");
        printf("3. Exit");
        printf("\nEnter Menu Selection: ");
        scanf("%d", &choice);
        switch(choice) {
        case 1: printf("\nEnter a name: ");
            scanf("%s", &name);
            printf("Enter age: ");
            scanf("%d", &age);
            ptr = initnode(name, age);
            add (ptr);
            break;
        case 2: printlist(head);
            break;
        case 3: exit(3);
        default: printf("Invalid Entry");
        }// end of switch


    }// end of while

}// end of main

すべてのヘルプは大歓迎です!!

4

2 に答える 2

1

リンカーは、関数が見つからないことを伝えていますadd

あなたは宣言しました:

void add(構造体ノード*)

プロトタイプでは、どこにも定義していません。

于 2013-04-10T06:27:42.000 に答える
1

addでメソッドを宣言しprototypeます。そしてadd(ptr) callメインメソッドで。でも見えないadd method definiton。そんなわけで、コンパイラーがリンカエラーを起こします。

于 2013-04-10T06:38:24.650 に答える