1

我收到一条错误消息,提示“参数类型” const char *“与“”不兼容char *。此代码由我的教授提供,我不确定问题出在哪里。

我正在编写 C,但我使用的是 C++ 编译器,因为如果这很重要,它更容易调试。

int main() {
    int i;
    Dictionary A;
    char* str;
    char* v;
    char* k = (char*)calloc(100, sizeof(char));

    // create a Dictionary and some pairs into it
    A = newDictionary();
    insert(A, "1", "a");  // it doesn't like "1" or "a"



// here is the function:
// insert()
// inserts new (key,value) pair into the end (rightmost part of) D
// pre: lookup(D, k)==NULL
void insert(Dictionary D, char* k, char* v) {
    Node N, A, B;
    if (D == NULL) {
        fprintf(stderr,
            "Dictionary Error: calling insert() on NULL Dictionary reference\n");
        exit(EXIT_FAILURE);
    }
    if (findKey(D->root, k) != NULL) {
        fprintf(stderr,
            "Dictionary Error: cannot insert() duplicate key: \"%s\"\n", k);
        exit(EXIT_FAILURE);
    }

    N = newNode(k, v);
    B = NULL;
    A = D->root;
    while (A != NULL) {
        B = A;
        if (strcmp(k, A->key) != 0) {
        A = A->right;
    }
    }
    if (B == NULL) {
        D->root = N;
    }
    else {B->right = N;}
    D->numPairs++;
}
4

1 回答 1

2

C++ 中的字符串文字总是这样的类型const char[N],其中N是带有(或不带有)空终止字节的字符串的大小。它们也可以被隐式强制const char *- 因此你关于不兼容类型的错误。有关更多信息,请参阅此答案

于 2019-08-04T23:08:56.413 回答