I am trying to build my overall expertise in C++ coming from VBA, so please forgive any glaring issues with my code... Using this simple program below, I am getting unexpected output.
#include <iostream>
int main() {
char f[]="", c[]="";
std::cin >> f;
std::cout << f << std::endl;
std::cin >> c;
std::cout << f << std::endl;
return 0;
}
When run, this is my result:
ABC (input)
f - ABC (output)
DEF (input)
f - EF (output)
Also tried as:
ABC DEF (input)
f - ABC (output)
f - EF (output)
I would expect that the output would be the same for both lines, since I THINK I'm only reading into f
once. Moreover, if I am taking the cin
and applying it to f
, why does the first attempt read the entire string (ABC
) while the second attempt is missing the D
?
I tried also printing the result using this code, but the same problem occurs, so I'm assuming here that it's a problem with the cin
and not cout
.
for (j=0;j<3;j++) {
std::cout << f[j];
}
std::cout << std::endl;
Doing some research, I found this question, which looked promising, but when I changed my declaration from char f[]
to char *f
, I ended up with SEGFAULTs on the cin
, while const char *f
wouldn't even compile.
I am fumbling blindly here and would appreciate some guidance on how to correctly use cin
and/or char
arrays.
To reiterate my question: Why does the output std::cout << f << std::endl;
, while not explicitly reassigning a value, vary in this way?