else goto widecharacter;
#endif /* WIDE_SCANF */
character: { /* read single character into char */
- if (!suppress) {
- char*c = va_arg(ap, char*);
- *c = _CHAR2SUPPORTED_(nch);
- }
- st = 1;
- nch = _GETC_(file);
- }
+ if (nch!=_EOF_) {
+ if (!suppress) {
+ char*c = va_arg(ap, char*);
+ *c = _CHAR2SUPPORTED_(nch);
+ }
+ st = 1;
+ nch = _GETC_(file);
+ }
+ }
break;
- widecharacter: {
- if (!suppress) { /* read single character into a wchar_t */
- MSVCRT_wchar_t*c = va_arg(ap, MSVCRT_wchar_t*);
- *c = _WIDE2SUPPORTED_(nch);
- }
- nch = _GETC_(file);
- st = 1;
+ widecharacter: { /* read single character into a wchar_t */
+ if (nch!=_EOF_) {
+ if (!suppress) {
+ MSVCRT_wchar_t*c = va_arg(ap, MSVCRT_wchar_t*);
+ *c = _WIDE2SUPPORTED_(nch);
+ }
+ nch = _GETC_(file);
+ st = 1;
+ }
}
break;
case 'n': {
char buffer[100], buffer1[100];
char format[20];
int result, ret;
+ char c;
float res1= -82.6267f, res2= 27.76f, res11, res12;
static const char pname[]=" St. Petersburg, Florida\n";
int hour=21,min=59,sec=20;
/* Check %i according to bug 1878 */
strcpy(buffer,"123");
ret = sscanf(buffer, "%i", &result);
- ok( ret == 1 , "Wrong number of arguments read\n");
+ ok(ret == 1, "Wrong number of arguments read: %d\n", ret);
ok(result == 123, "Wrong number read\n");
ret = sscanf(buffer, "%d", &result);
- ok( ret == 1 , "Wrong number of arguments read\n");
+ ok(ret == 1, "Wrong number of arguments read: %d\n", ret);
ok(result == 123, "Wrong number read\n");
+
+ /* Check %c */
+ strcpy(buffer,"a");
+ c = 0x55;
+ ret = sscanf(buffer, "%c", &c);
+ ok(ret == 1, "Wrong number of arguments read: %d\n", ret);
+ ok(c == 'a', "Field incorrect: '%c'\n", c);
+
+ strcpy(buffer," a");
+ c = 0x55;
+ ret = sscanf(buffer, "%c", &c);
+ ok(ret == 1, "Wrong number of arguments read: %d\n", ret);
+ ok(c == ' ', "Field incorrect: '%c'\n", c);
+
+ strcpy(buffer,"18:59");
+ c = 0x55;
+ ret = sscanf(buffer, "%d:%d%c", &hour, &min, &c);
+ ok(ret == 2, "Wrong number of arguments read: %d\n", ret);
+ ok(hour == 18, "Field 1 incorrect: %d\n", hour);
+ ok(min == 59, "Field 2 incorrect: %d\n", min);
+ ok(c == 0x55, "Field 3 incorrect: 0x%02x\n", c);
}
START_TEST(scanf)