我尝试编译这段代码,但它给了我"传递'strcpy'的参数2从整数发出指针,而无需强制转换[-Wint-conversion]"。有人可以告诉我我需要做什么。
struct Book
{
char title[MAX_TITLE_LENGTH+1];
char author[MAX_AUTHOR_LENGTH+1];
int year;
};
void menu_delete_book(void)
{
char temp[300];
int x,b;
int no_books;
fgets(temp,MAX_TITLE_LENGTH,stdin);
{
for(x = 0; x< no_books; x++)
{
if (strcmp (book_array[x].title, temp) == 0)
{
for(x=1; x < no_books -1; x++)
{
for(b = x + 1; b < no_books; b++)
{
strcpy(book_array[x].title, book_array[b].title);
strcpy(book_array[x].author, book_array[b].author);
strcpy(book_array[x].year, book_array[b].year);
}
}
}
}
}
no_books++;
它抱怨这行:
strcpy(book_array[x].year, book_array[b].year);
Book::year 是一个整数,而不是一个字符串。请改为执行以下操作:
book_array[x].year = book_array[b].year;
警告告诉您传递给strcpy
的整数值正在隐式转换为指针。将int
转换为pointer
几乎总是一个错误,在您的情况下,整数绝对不包含有效的指针值。