这一个c++程序,题目是一个简单的通讯录,但是有错,望各位大神解惑啊,急!程序如下:

2024-12-01 09:22:33
推荐回答(4个)
回答1:

cout<<"Please input a choice: n= ";
cin>>n;
getchar(); //这里加个getchar()就好了。 cin>>n后会键入一个回车,这个回车暂存在缓存中,如果不滤掉,cin.get()函数就会读到而导致函数读入结束。因此,不能读入数据。

回答2:

你好,最好能写明什么错误。这样回答人数会多些。毕竟大家都不想一行一行读代码。

应该是
cin.get(addr,20);的问题

取定长的c字符串可以用cin>>setw(20); cin>>name;
可以截取20个字符,缺点是超出长度的字符也会显示。

如果不想显示。只能自己用单个字符输入来实现了。
比如for(int i = 0; i < 20; i++) name[i] = getchar();
大概这样写个函数也不复杂。

回答3:

问题原因:
由于流中存在'\n', 而cin遇到回车或空格就结束输入。

问题解决:
在每个子函数的cin.get(param_list)之前,使用cin.get(), “吃掉”缓冲区的'\n'即可

回答4:

太多了 能把问题清楚化最好