C ++输入字符串崩溃

时间:2016-10-07 15:58:05

标签: c++

我是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;
}

这是输出:

1 个答案:

答案 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