ok( ret == 1, "Error with format \"%s\"\n","%*[a-cd-dg-e]%c");
ok( buffer[0] == 'h', "Error with \"abcefgdh\" \"%c\"\n", buffer[0]);
+ buffer1[0] = 'b';
+ ret = sscanf("a","%s%s", buffer, buffer1);
+ ok( ret == 1, "expected 1, got %u\n", ret);
+ ok( buffer[0] == 'a', "buffer[0] = '%c'\n", buffer[0]);
+ ok( buffer[1] == '\0', "buffer[1] = '%c'\n", buffer[1]);
+ ok( buffer1[0] == 'b', "buffer1[0] = '%c'\n", buffer1[0]);
+
/* check digits */
ret = sprintf(buffer,"%d:%d:%d",hour,min,sec);
ok( ret == 8, "expected 8, got %u\n", ret);
ret = sscanf(buffer, "%lld", &result64);
ok(ret == 1, "Wrong number of arguments read: %d\n", ret);
ret = sprintf(buffer1, "%lld", result64);
- ok(ret==14 || broken(ret==10), "sprintf retuned %d\n", ret);
+ ok(ret==14 || broken(ret==10), "sprintf returned %d\n", ret);
if(ret == 14)
ok(!strcmp(buffer, buffer1), "got %s, expected %s\n", buffer1, buffer);
ret = sscanf(buffer, "%d:%d%n", &hour, &min, &number_so_far);
ok(ret == 2, "Wrong number of arguments read: %d\n", ret);
ok(number_so_far == 4, "%%n yielded wrong result: %d\n", number_so_far);
+
+ buffer[0] = 0;
+ buffer1[0] = 0;
+ ret = sscanf("test=value\xda", "%[^=] = %[^;]", buffer, buffer1);
+ ok(ret == 2, "got %d\n", ret);
+ ok(!strcmp(buffer, "test"), "buf %s\n", buffer);
+ ok(!strcmp(buffer1, "value\xda"), "buf %s\n", buffer1);
+
+ ret = sscanf("\x81\x82test", "\x81%\x82%s", buffer);
+ ok(ret == 1, "got %d\n", ret);
+ ok(!strcmp(buffer, "test"), "buf = %s\n", buffer);
}
static void test_sscanf_s(void)
wchar_t buffer[100];
int result, ret;
static const WCHAR formatd[] = {'%','d',0};
+ const WCHAR format2[] = {'a',0x1234,'%',0x1234,'%','c',0};
+ WCHAR c;
/* check WEOF */
/* WEOF is an unsigned short -1 but swscanf returns int
/* msvcrt returns 0 but should return -1 (later versions do) */
ok( ret == (short)WEOF || broken(ret == 0),
"swscanf returns %x instead of %x\n", ret, WEOF );
+
+ buffer[0] = 'a';
+ buffer[1] = 0x1234;
+ buffer[2] = 0x1234;
+ buffer[3] = 'b';
+ ret = swscanf(buffer, format2, &c);
+ ok(ret == 1, "swscanf returned %d\n", ret);
+ ok(c == 'b', "c = %x\n", c);
}
START_TEST(scanf)