簡體   English   中英

如何修復從 'char' 到 'const char*' [-fpermissive] 的錯誤無效轉換?

[英]How to fix error invalid conversion from 'char' to 'const char*' [-fpermissive]?

嗨,我是初學者,我必須使用庫在 C++ 中制作一個簡單的電話簿程序。 我肯定會使用,但我不允許使用它,因為它用於作業。 下面是我的代碼,直到現在我有 3 個錯誤,我不知道如何解決。 我知道從 char 到 const char* 的轉換是不允許的,但我真的需要比較這兩種類型 c arrays,但我不知道該怎么做。 我正在使用 strcmp 並且我正在使用 '\0' 作為看起來正確的字符。

#include <iostream>

#include <cstring>

using namespace std;

struct contact {
char name[30];
char surname[30];
char phone_number[30];
};
int main() {


            for (int i = 0; i < 30; i++)
            {
                if (strcmp(person.name[i],person.surname[i]) != '\0')   <--- //ERROR HERE
                    cout << person.name[i] << person.surname[i] << person.phone_number[i];
                check++;
            }
           
            char temp;
            char temp1;
            cout << "Insert the name of the contact to delete: \n";
            cin >> temp;
            cout << "Insert the surname of the contact to delete: \n";
            cin >> temp1;
            int check = 0;
            for (int i = 0; i < 30; i++)
            {
                if (strcmp(temp,person.name[i]) == 0 && strcmp(temp1, person.surname[i]) == 0)
                {   ^-- // 2 ERRORS HERE CONVERSION FROM 'CHAR' TO 'CONST CHAR*'
                    cout << "Contact deleted!\n";
                    person.name[i] = '\0';
                    person.surname[i] =  '\0';
                    person.phone_number[i] = '\0';
                    check++;
                }
                if (check == 0)
                {
                    cout << "This person is not in your contact list\n ";
                 
            return 0;
    }


    

可能你對struct不是很了解,這里是我修改過的一個sample,你可以參考一下

#include <iostream>
#include <stdio.h>

using namespace std;

struct person{
    char name[30];
    char surname[30];
    char phone_number[30];
};

int main()
{
    person Persons[] = { // structure initialization
        {"Bob","Thug Bob","01230123"},
        {"Marry","Gangster Marry","9999999"},
        {"Somebody","Mr Somebody","777777"}
    };

    int Size = sizeof(Persons)/sizeof(Persons[0]); // return size of Persons array

    for(int i=0;i<Size;i++){
        cout << Persons[i].name << "\t"<< Persons[i].surname << "\t"<< Persons[i].phone_number <<endl;
    }

    return 0;
}

temp 和 temp1 是char strcmp 期望const char*

我建議對 C++ 使用std::string ,它是 char* 的包裝器,並且有更多方便的方法可以使用。

我將從頭開始,因為這段代碼真的很不方便。 很抱歉提出了一個不必要的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM