📄 testconv.c
字号:
if (result == NULL)
result = "<Error>";
/* Replace spaces by underlines for visibility */
for (scan = result; *scan; scan++)
if (*scan == ' ')
*scan = '_';
printf (" dtos: %-55s", line);
printf (" => %s\n", result);
if (conv_reason)
printf ("Error: %s\n", conv_reason_text [conv_reason]);
mem_free (order);
mem_free (format);
mem_free (flags);
}
/*---------------------------------------------------------------------------
* Run test through conv_str_date; format is:
*
* datestr order format flags
*/
static void
test_stod (char *line)
{
long
result;
int
offset = 0,
order_val,
format_val;
char
*string,
*order,
*format,
*flags,
*flags_ptr;
word
flags_val;
string = mem_strdup (get_token (line, &offset));
order = mem_strdup (get_token (line, &offset));
format = mem_strdup (get_token (line, &offset));
flags = mem_strdup (get_token (line, &offset));
order_val = streq (order, "YMD")? DATE_ORDER_YMD:
streq (order, "DMY")? DATE_ORDER_DMY:
streq (order, "MDY")? DATE_ORDER_MDY:
/* else */ 0;
flags_val = 0;
for (flags_ptr = flags; *flags_ptr; flags_ptr++)
{
switch (*flags_ptr)
{
case 'D': flags_val |= FLAG_D_DD_AS_D; break;
case 'M': flags_val |= FLAG_D_MM_AS_M; break;
case 'a': flags_val |= FLAG_D_MONTH_ABC; break;
case 'c': flags_val |= FLAG_D_CENTURY; break;
case 'u': flags_val |= FLAG_D_UPPER; break;
case 'y': flags_val |= FLAG_D_ORDER_YMD; break;
case 'm': flags_val |= FLAG_D_ORDER_MDY; break;
case 'd': flags_val |= FLAG_D_ORDER_DMY; break;
}
}
format_val = streq (format, "YMD")? DATE_YMD_COMPACT:
streq (format, "YMD/")? DATE_YMD_DELIM:
streq (format, "YMDb")? DATE_YMD_SPACE:
streq (format, "YMD,")? DATE_YMD_COMMA:
streq (format, "YM")? DATE_YM_COMPACT:
streq (format, "YM/")? DATE_YM_DELIM:
streq (format, "YMb")? DATE_YM_SPACE:
streq (format, "MD")? DATE_MD_COMPACT:
streq (format, "MD/")? DATE_MD_DELIM:
streq (format, "MDb")? DATE_MD_SPACE:
/* else */ 0;
result = conv_str_date (string, flags_val, format_val, order_val);
printf (" stod: %-55s", line);
printf (" => %ld\n", result);
if (conv_reason)
printf ("Error: %s\n", conv_reason_text [conv_reason]);
mem_free (string);
mem_free (order);
mem_free (format);
mem_free (flags);
}
/*---------------------------------------------------------------------------
* Run test through conv_time_pict; format is:
*
* hhmmsscc picture
*/
static void
test_ttop (char *line)
{
long
time;
int
offset = 0;
char
*picture,
*scan,
*result;
time = atol (get_token (line, &offset));
picture = mem_strdup (get_token (line, &offset));
result = conv_time_pict (time, picture);
if (result == NULL)
result = "<Error>";
/* Replace spaces by underlines for visibility */
for (scan = result; *scan; scan++)
if (*scan == ' ')
*scan = '_';
printf (" dtop: %-55s", line);
printf (" => %s\n", result);
if (conv_reason)
printf ("Error: %s\n", conv_reason_text [conv_reason]);
mem_free (picture);
}
/*---------------------------------------------------------------------------
* Run test through conv_time_str; format is:
*
* hhmmsscc flags width
*/
static void
test_ttos (char *line)
{
long
time;
int
offset = 0,
width;
char
*flags,
*flags_ptr,
*scan,
*result;
word
flags_val;
time = atol (get_token (line, &offset));
flags = mem_strdup (get_token (line, &offset));
width = atoi (get_token (line, &offset));
flags_val = 0;
for (flags_ptr = flags; *flags_ptr; flags_ptr++)
{
switch (*flags_ptr)
{
case 'h': flags_val |= FLAG_T_HH_AS_H; break;
case 'm': flags_val |= FLAG_T_MM_AS_M; break;
case 's': flags_val |= FLAG_T_SS_AS_S; break;
case 'c': flags_val |= FLAG_T_CC_AS_C; break;
case '/': flags_val |= FLAG_T_COMPACT; break;
case 'p': flags_val |= FLAG_T_12_HOUR; break;
}
}
result = conv_time_str (time, flags_val, ':', width);
if (result == NULL)
result = "<Error>";
/* Replace spaces by underlines for visibility */
for (scan = result; *scan; scan++)
if (*scan == ' ')
*scan = '_';
printf (" ttos: %-55s", line);
printf (" => %s\n", result);
if (conv_reason)
printf ("Error: %s\n", conv_reason_text [conv_reason]);
mem_free (flags);
}
/*---------------------------------------------------------------------------
* Run test through conv_str_time; format is:
*
* timestr
*/
static void
test_stot (char *line)
{
long
result;
int
offset = 0;
char
*string;
string = get_token (line, &offset);
result = conv_str_time (string);
printf (" stot: %-55s", line);
printf (" => %ld\n", result);
if (conv_reason)
printf ("Error: %s\n", conv_reason_text [conv_reason]);
}
/*---------------------------------------------------------------------------
* Run test through conv_number_str; format is:
*
* +00012345 {-.<0B,} decs ./, 1.10|1.1|1 n-|n+|-n|+n|(n) width
*/
static void
test_ntos (char *line)
{
int
offset = 0,
decimals,
decfmt_val,
negfmt_val,
width;
word
flags_val;
char
*number,
*result,
*flags,
*flags_ptr,
decpoint,
*scan,
*decfmt,
*negfmt;
number = mem_strdup (get_token (line, &offset));
flags = mem_strdup (get_token (line, &offset));
decimals = atoi (get_token (line, &offset));
decpoint = *get_token (line, &offset);
decfmt = mem_strdup (get_token (line, &offset));
negfmt = mem_strdup (get_token (line, &offset));
width = atoi (get_token (line, &offset));
flags_val = 0;
for (flags_ptr = flags; *flags_ptr; flags_ptr++)
{
switch (*flags_ptr)
{
case '-': flags_val += FLAG_N_SIGNED; break;
case '.': flags_val += FLAG_N_DECIMALS; break;
case '<': flags_val += FLAG_N_LEFT; break;
case '0': flags_val += FLAG_N_ZERO_FILL; break;
case 'B': flags_val += FLAG_N_ZERO_BLANK; break;
case ',': flags_val += FLAG_N_THOUSANDS; break;
}
}
negfmt_val = streq (negfmt, "n-") ? SIGN_NEG_TRAIL:
streq (negfmt, "n+") ? SIGN_ALL_TRAIL:
streq (negfmt, "-n") ? SIGN_NEG_LEAD:
streq (negfmt, "+n") ? SIGN_ALL_LEAD:
streq (negfmt, "(n)") ? SIGN_FINANCIAL:
/* else */ 0;
decfmt_val = streq (decfmt, "1.10") ? DECS_SHOW_ALL:
streq (decfmt, "1.1") ? DECS_DROP_ZEROS:
streq (decfmt, "1") ? DECS_HIDE_ALL:
/* else */ 0;
printf (" ntos: %-55s", line);
result = conv_number_str (number, flags_val, decpoint,
decimals, decfmt_val, width, negfmt_val);
/* Replace spaces by underlines for visibility */
if (result)
{
for (scan = result; *scan; scan++)
if (*scan == ' ')
*scan = '_';
printf (" => %s\n", result);
}
else
printf (" => (null)\n");
if (conv_reason)
printf ("Error: %s\n", conv_reason_text [conv_reason]);
mem_free (number);
mem_free (flags);
mem_free (decfmt);
mem_free (negfmt);
}
/*---------------------------------------------------------------------------
* Run test through conv_str_number; format is:
*
* +00012345 {-.<0B,} decs ./, 1.10|1.1|1 width
*/
static void
test_ston (char *line)
{
int
offset = 0,
decimals,
decfmt_val,
width;
word
flags_val;
char
*result,
*scan,
*string,
*flags,
*flags_ptr,
decpoint,
*decfmt;
string = mem_strdup (get_token (line, &offset));
flags = mem_strdup (get_token (line, &offset));
decimals = atoi (get_token (line, &offset));
decpoint = *get_token (line, &offset);
decfmt = mem_strdup (get_token (line, &offset));
width = atoi (get_token (line, &offset));
flags_val = 0;
for (flags_ptr = flags; *flags_ptr; flags_ptr++)
{
switch (*flags_ptr)
{
case '-': flags_val += FLAG_N_SIGNED; break;
case '.': flags_val += FLAG_N_DECIMALS; break;
case '<': flags_val += FLAG_N_LEFT; break;
case '0': flags_val += FLAG_N_ZERO_FILL; break;
case 'B': flags_val += FLAG_N_ZERO_BLANK; break;
case ',': flags_val += FLAG_N_THOUSANDS; break;
}
}
decfmt_val = streq (decfmt, "1.10") ? DECS_SHOW_ALL:
streq (decfmt, "1.1") ? DECS_DROP_ZEROS:
streq (decfmt, "1") ? DECS_HIDE_ALL:
/* else */ 0;
printf (" ston: %-55s", line);
result = conv_str_number (string, flags_val, decpoint,
decimals, decfmt_val, width);
/* Replace spaces by underlines for visibility */
if (result)
{
for (scan = result; *scan; scan++)
if (*scan == ' ')
*scan = '_';
printf (" => %s\n", result);
}
else
printf (" => (null)\n");
if (conv_reason)
printf ("Error: %s\n", conv_reason_text [conv_reason]);
mem_free (string);
mem_free (flags);
mem_free (decfmt);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -