问题描述
#include<stdio.h>
#include<conio.h>
struct books {
int id;
char title;
char author;
int year;
long isbn;
};
int main() {
struct books b;
clrscr();
printf("\n Enter BOOK ID: ");
scanf("%d",&b.id);
printf("\n Enter BOOK TITLE: ");
scanf("%s",&b.title);
printf("\n Name of AUTHOR: ");
scanf("%s",&b.author);
printf("\n Enter YEAR: ");
scanf("%d",&b.year);
printf("\n Enter ISBN: ");
scanf("%d",&b.isbn);
printf("\n BOOK ID: %d \n ",b.id);
printf("\n TITLE: %s \n ",b.title);
printf("\n AUTHOR: %s \n ",b.author);
printf("\n YEAR: %d \n ",b.year);
printf("\n ISBN: %d \n ",b.isbn);
getch();
return 0;
}
现在,当我执行此操作时,我可以输入 id、year 和 isbn 的值,但输入标题和作者的值,当我输入显示“异常终止”的名称时,有人可以告诉我我做错了什么吗?
解决方法
您输入的标题是 std::string
,但您使用的 char
可能会导致错误。此外,您长时间使用 %d
,这是错误的,因为您应该为此使用 %ld
。
不仅有时产生错误的不是您的代码,而是导致错误的 Turbo C++。所以尝试重新启动 Turbo C++,如果可能的话,在另一个 IDE 上运行相同的代码来检查代码是否真的错误。