trying to undestand scanf()
I had two files to be read and parse the contents strings for values:
scanf1.txt
GAMEVERSION=1
FILEVERSION=1
scanf2.txt
FILEVERSION=2
GAMEVERSION=2
In the following code example:
#include <stdio.h>
int main (int argNum, char* argVect[]) {
FILE *f1;
FILE *f2;
int ret;
int fileversion=0;
int gameversion=0;
f1 = fopen("scanf1.txt", "rb");
f2 = fopen("scanf2.txt", "rb");
ret=fscanf(f1, "%*s FILEVERSION=%d", &fileversion);
printf("f1 ret:%d filever:%d\n", ret, fileversion);
fileversion=0;
ret=fscanf(f2, "%*s FILEVERSION=%d", &fileversion);
printf("f2 ret:%d filever:%d\n", ret, fileversion);
rewind (f1); rewind (f2);
ret=fscanf(f1, "%*s GAMEVERSION=%d", &gameversion);
printf("f1 ret:%d gamever:%d\n", ret, gameversion);
gameversion=0;
ret=fscanf(f2, "%*s GAMEVERSION=%d", &gameversion);
printf("f2 ret:%d gamever:%d\n", ret, gameversion);
fclose(f1);
fclose(f2);
return 0;
}
tryed some scanf variations without success.
With format as one of the following:
"%*s FILEVERSION=%d"
"%*[A-Z=0-9] FILEVERSION=%d"
"%*14c FILEVERSION=%d"
"%*14cFILEVERSION=%d"
(and same format with "GAMEVERSION=" in the second two)
I got this output:
f1 ret:1 filever:1
f2 ret:0 filever:0
f1 ret:0 gamever:0
f2 ret:1 gamever:2
With format as the following:
"%*[^F] FILEVERSION=%d", &fileversion
"%*[^G] GAMEVERSION=%d", &gameversion
I got this output:
f1 ret:1 filever:1
f2 ret:0 filever:0
f1 ret:0 gamever:0
f2 ret:1 gamever:2
With format as the following:
"FILEVERSION=%d"
I got this output:
f1 ret:0 filever:0
f2 ret:1 filever:2
f1 ret:1 gamever:1
f2 ret:0 gamever:0
So seems no unique code can read both files for
"FILEVERSION=" and "GAMEVERSION=" values
as the string before the match can be empty.
Is there a method with scanf to read a possibly empty string?