It could be picking up a stray null character. I had this problem in my classes last semester. Try cin.ignore() before cin >> dadname. This will toss the stray character and hopefully read in the actual data. :)
#include <iostream>
#include <string>
int main()
{
using std::cout;
using std::cin;
using std::endl;
using std::string;
string momname, dadname;
cout << "Enter your mom's name:";
cin >> momname;
cout << endl;
cout << "\nEnter your dad's name:";
cin >> dadname;
cout << endl;
cout << momname << endl;
cout << dadname << endl;
return 0;
}
In your example, momname and dadname are of type char, which represents one character. If you were to input one letter per name when it asked, this program would work. But if you were to input more than one letter, cin works like a queue and uses the first letter for momname and the second letter for dadname. In my example, I change the type from char to std::string which allows more than one character and dynamically allocates space for you as well. The C way, which we here at C++ do not recommend is to make an array of C characters like such: char momname[30];
There isn't really anything wrong with this but it doesn't look very pretty and the question of how much should I allocate at first comes about where as std::string removes this all together.