0

所以,我试图在我的电话簿实验室中删除链接列表的所有条目,它正在读取一个我不知道如何修复的错误。错误是读取“从类型'int'分配给类型char [50]时不兼容的类型。”

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
    
typedef struct phonebook{ 
    char first_name[70];
    char last_name[50];
    char phone_num[50];
    }entry; //TypeDef to modify structure name


    void addFriend(entry *, int *); //function prototype to add a friend 
    void dltFriend(entry *, int *, int);
    void showBook(entry *, int *);
    void alphaList(entry*, int*);
    void findNum(entry*, int*);
    void randSelect(entry*, int*);
    void dltAll(entry*,int*);

void dltAll(entry*phonebook, int*count){
int i;
for(i=0; i< *count; i++)
{

    do{
        phonebook[i].first_name = '\0';
        phonebook[i].last_name = '\0';
        phonebook[i].phone_num = '\0';
        break;
    }
    while (i <= *count);

}
printf("\nAll contacts deleted\n");
system("pause");
}
4

2 回答 2

2

错误是读取“从类型'int'分配给类型char [50]时不兼容的类型。”

消息是由于这一行:

phonebook[i].last_name = '\0';
\____________________/   \__/
 This is a char[50]       This is an integer

将整数值分配给数组是没有意义的。如果要last_name变成空字符串,请执行以下操作:

phonebook[i].last_name[0] = '\0';

其他注意事项:

像这样的构造:

do{
    ...
    break;
}
while (i <= *count);

没有意义,因为执行一次break后将结束循环。...所以只需删除循环。

我也希望函数设置*count为零。

于 2021-10-22T12:49:43.923 回答
0
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

typedef struct phonebook{
    char first_name[70];
    char last_name[50];
    char phone_num[50];
    }entry; //TypeDef to modify structure name


    void addFriend(entry *, int *); //function prototype to add a friend
    void dltFriend(entry *, int *, int);
    void showBook(entry *, int *);
    void alphaList(entry*, int*);
    void findNum(entry*, int*);
    void randSelect(entry*, int*);
    void dltAll(entry*,int*);

void dltAll(entry*phonebook, int*count){
int i;
for(i=0; i< *count; i++)
{
        strcpy(phonebook[i].first_name,"NULL");
        strcpy(phonebook[i].last_name,"NULL");
        strcpy(phonebook[i].phone_num,"NULL");
}
printf("\nAll contacts deleted\n");
}
/*int main()
{
    void dltAll();
return 0;
}*/
于 2021-10-22T18:41:06.680 回答