I’m puzzled by the following difference in behaviour:
// suppose myfile.txt contains a single line with the single character 's'
errno_t res;
FILE* fp;
char cmd[81];
res = fopen_s(&fp, "D:\\myfile.txt", "rb" );
fscanf(fp,"%80s",cmd); // cmd now contains 's/0'
fclose(fp);
res = fopen_s(&fp, "D:\\myfile.txt", "rb" );
fscanf_s(fp,"%80s",cmd); // cmd now contains '/0' !
fclose(fp);
The results do not depend in the order of call (i.e., call fscanf_s first, you’d get the empty string first). Compiled on VC++ – VS2005. Can anyone reproduce? Can anyone explain?
Thanks!
From the docs on
fscanf_s(), http://msdn.microsoft.com/en-us/library/6ybhk9kc.aspx:And http://msdn.microsoft.com/en-us/library/w40768et.aspx:
So you should call it like so: