#include <iostream> using namespace std; int main() { char question[20],answer[20]; cin.getline(question,20); cin.getline(answer,20); cout<<question<<endl; cout<<answer<<endl; return 0; }解释一下为什么第一行的字符超过20个就会直接结束
时间: 2024-02-29 18:55:13 浏览: 42
在这段代码中,我们使用了`cin.getline()`函数来从标准输入读取字符串。该函数的第一个参数是一个字符数组,表示要存储读取的字符串的位置,第二个参数是一个整数,用于指定要读取的最大字符数(包括空字符)。如果输入的字符数超过了指定的最大字符数,则该函数将停止读取字符,并将剩余的字符留在输入缓冲区中。
因此,在这段代码中,当输入的字符数超过20个时,`cin.getline()`函数只会读取前20个字符,剩余的字符将留在输入缓冲区中。由于我们没有处理输入缓冲区中剩余的字符,因此它们可能会影响后续的输入操作,从而导致程序出现问题。
相关问题
#include <iostream> using namespace std; int main() { char question[20],answer[20]; cin.get(question,20); cin.get(answer,20); cout<<question<<endl; cout<<answer<<endl; return 0; }解释一下为什么输入一段就输出
这段代码中使用了 `cin.get()` 函数来获取输入,它会读取指定长度的字符或者遇到换行符(`\n`)才停止读取。因此,当你输入一段字符时,这段字符中可能会包含换行符,而 `cin.get()` 会把换行符也读取进来。接着,你再次使用 `cin.get()` 获取输入时,它会立即读取之前输入的换行符,导致第二个输入实际上是空的,因此输出的结果只有第一个输入的内容。要解决这个问题,可以在第一个 `cin.get()` 后面加上 `cin.ignore()` 来清除输入缓冲区中的换行符,或者使用 `cin.getline()` 函数来获取输入,它会自动忽略换行符。
阅读全文