在整数数据类型和连续两个字符类型之后.第 2 个字符的数据类型跳过..为什么
After a integer data type and consecutive two character type. The 2nd character data type skips....Why?
#include<iostream>
using namespace std;
int main()
{
int n=0;
char name[20];
char address[50];
cout<<"Enter a Number";
cin>>n;
cout<<"Enter a Name ="; // HERE
gets(name);
cout<<"Enter a Address=";
gets(address);
cout<<"Number ="<<n<<endl;
cout<<"Name = "<<name<<endl;
cout<<"Address = "<<address<<endl;
}
它有一个整数类型和两个字符类型的数组。当程序到达("输入名称"(时,为什么编译器跳过它而没有显示任何问题。
因为当您使用 cin
获取整数时,您按下以结束输入的换行符将保留在输入缓冲区中,因此当您下次获取一行时,gets
函数将看到此换行符并将其读取为空行。
您可以要求cin
忽略输入,直到(包括(下一个换行符
cin.ignore(numeric_limits<streamsize>::max(), 'n');
这是一个稍微修改的代码:
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int n=0;
char name[20],c;
char address[50];
cout<<"Enter a Number";
cin>>n;
c = getchar();
cout<<"Enter a Name =";
gets(name);
cout<<"Enter a Address=";
gets(address);
cout<<"Number ="<<n<<endl;
cout<<"Name = "<<name<<endl;
cout<<"Address = "<<address<<endl;
}
在这里,我只做了一个修改:在输入数字后输入一个字符。此字符存储键入输入后按的 或回车键。早些时候,Name 字段存储了 ,因此输入跳到下一个字段,但现在我们使用缓冲区字符来存储它。
相关文章:
- 防止主数据类型C++的隐式转换
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在C++中打印指向不同基元数据类型的指针的内存地址
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 如何计算数据类型的范围,例如int
- C++中数据类型修饰符的顺序
- 如何获取C++字符数据类型的地址
- 将空格作为单字符数据类型的输入?
- C++ - 使用结构数据类型将单词中的单个小写字符更改为大写,反之亦然
- 在结构数据类型中更改每个字符的 ASCII 值
- 字符串中单个字符作为数组的数据类型是什么
- 如何在一行中从不同的变量(数据类型)创建一个字符数组?
- 如何在宽字符数组的末尾附加一个零字符,以制作这种奇怪的 PCZZWSTR winapi 数据类型
- C++ 个字符数据类型的用途是什么?为什么不直接使用字符串?
- 将字符数组解释为多个连接的数据类型
- 在整数数据类型和连续两个字符类型之后.第 2 个字符的数据类型跳过..为什么
- 如何将char数据类型用作数字而不是字符
- C/C++中的字符数据类型
- "byte"数据类型包含奇怪的字符
- 哪种数据类型用于C#中的无符号字符