c++ - Printf and cout only printing first character of args cpp -
i may missing point here have following method print out args in cpp program in visual studio:
int _tmain(int argc, char* argv[]) { char* fu = "bar"; std::cout << "test, " << argc << ", " << argv[0] << ", " << argv[1] << ", " << fu << endl; printf("%s, %s, %s", argv[0], argv[1], fu); return 0; } the problem having seems print first character of args , not whole string.
from can tell, argv[0] dereferences argv array char*, , passing cout/printf functions. should print characters \0 character.
i created test char* fu see if problem passing in char* functions, 'bar' printed.
the thing can think because size of fu known @ compile time , size of argv isn't funny going on way compiled.
i know can print out contents looping through characters seems defeat point, example if want work strings comparison or something. can please explain what's going on?
either change _tmain main, or change char tchar , printf _tprintf. should using tchar-based facilities consistently, or not @ all.
it's clear building unicode build, , parameters passed wchar_t* pointers, not char*. treating them if char*, program exhibits undefined behavior.
Comments
Post a Comment