我是C ++的新手并且还在学习它。我在书上做了一些练习,一切看起来都在我的程序中,但在显示我输入的输入时它会崩溃。我试图在不同的编译器和计算机上运行它,结果是一样的。希望有人帮我谢谢。这是程序。
#include<iostream>
using namespace std;
int main()
{
string name;
char code[1];
float price;
int quantity;
cout<<"Enter an item name : "<<endl;
getline(cin,name);
cout<<"Enter the item code : "<<endl;
cin>>code;
cout<<"Enter the price per unit : "<<endl;
cin>>price;
cout<<"Enter the quanlity : "<<endl;
cin>>quantity;
cout<<"You entered the item name : "<<name<<endl
<<"You entered the item code : "<<code<<endl
<<"You entered the item price : "<<"RM"<<price<<endl
<<"You entered the item quantity: "<<quantity<<" unit"<<endl
<<"The total cost : "<<"RM"<<(quantity*price)<<endl;
return 0;
}
这是输出:
答案 0 :(得分:1)
modelBuilder.Entity<Registration>()
.HasRequired(e => e.Participant)
.WithMany(u => u.Events)
.HasForeignKey(e => e.ParticipantId);
modelBuilder.Entity<Registration>()
.HasRequired(e => e.Event)
.WithMany(u => u.Participants)
.HasForeignKey(e => e.EventId);
当传递给函数时,数组被视为指针(它们&#34;衰变&#34;)。有关阵列衰减的更多信息:What is array decaying?
char code[1];
cin>>code;
实际上是一个函数,因此>>
被视为指向code
的指针。它将指向char
的指针视为c样式字符串,并尝试将其终止。遗憾的是,只有一个字符的空间,并且空终止符没有空间,因此空终止符被写入不属于程序的内存。
如果程序存活,char
。 "You entered the item code : "<<code<<endl
也将指向<<
的指针视为c样式字符串并尝试写入,直到找到空终止符,读取数组末尾和无效内存,谁知道在哪里它最终会找到一个空字符并停止。
解决方案:
如果您只想要一个char
,请将代码定义为只有一个char
char