设为首页 加入收藏

TOP

C语言学习趣事_MSCRT_IO_SourceFile (十一)
2014-11-24 00:40:18 来源: 作者: 【 】 浏览:258
Tags:语言学习 趣事 _MSCRT_IO_SourceFile
while (count-- > 0) {
retval = mbtowc(&wchar, p, MB_CUR_MAX);
if (retval <= 0)
break;
WRITE_CHAR(wchar, &charsout);
p += retval;
}
} else {
WRITE_STRING(text.wz, textlen, &charsout);
}
#endif /* WPRFLAG */

if (flags & FL_LEFT) {
/* pad on right with blanks */
WRITE_MULTI_CHAR(_T(' '), padding, &charsout);
}

/* we're done! */
}
break;
}
}

return charsout; /* return value = number of characters written */
}

/*
* Future Optimizations for swprintf:
* - Don't free the memory used for converting the buffer to wide chars.
* Use realloc if the memory is not sufficient. Free it at the end.
*/

/***
*void write_char(int ch, int *pnumwritten)
#ifdef WPRFLAG
*void write_char(wchar_t ch, FILE *f, int *pnumwritten)
#endif
*void write_char(int ch, FILE *f, int *pnumwritten)
*
*Purpose:
* Writes a single character to the given file/console. If no error occurs,
* then *pnumwritten is incremented; otherwise, *pnumwritten is set
* to -1.
*
*Entry:
* int ch - character to write
* FILE *f - file to write to
* int *pnumwritten - pointer to integer to update with total chars written
*
*Exit:
* No return value.
*
*Exceptions:
*
*******************************************************************************/

#ifdef CPRFLAG

LOCAL(void) write_char (
int ch,
int *pnumwritten
)
{
if (_putch_lk(ch) == EOF)
*pnumwritten = -1;
else
++(*pnumwritten);
}

#elif WPRFLAG

LOCAL(void) write_char (
int ch,
FILE *f,
int *pnumwritten
)
{
if (_putwc_lk(ch, f) == WEOF)
*pnumwritten = -1;
else
++(*pnumwritten);
}

#else

LOCAL(void) write_char (
int ch,
FILE *f,
int *pnumwritten
)
{
if (_putc_lk(ch, f) == EOF)
*pnumwritten = -1;
else
++(*pnumwritten);
}

#endif

/***
*void write_multi_char(int ch, int num, int *pnumwritten)
#ifdef WPRFLAG
*void write_multi_char(wchar_t ch, int num, FILE *f, int *pnumwritten)
#endif
*void write_multi_char(int ch, int num, FILE *f, int *pnumwritten)
*
*Purpose:
* Writes num copies of a character to the given file/console. If no error occurs,
* then *pnumwritten is incremented by num; otherwise, *pnumwritten is set
* to -1. If num is negative, it is treated as zero.
*
*Entry:
* int ch - character to write
* int num - number of times to write the characters
* FILE *f - file to write to
* int *pnumwritten - pointer to integer to update with total chars written
*
*Exit:
* No return value.
*
*Exceptions:
*
*******************************************************************************/

#ifdef CPRFLAG

LOCAL(void) write_multi_char (
int ch,
int num,
int *pnumwritten
)
{
while (num-- > 0)
write_char(ch, pnumwritten);
}

#else /* CPRFLAG */
#if WPRFLAG

LOCAL(void) write_multi_char (
wchar_t ch,
int num,
FILE *f,
int *pnumwritten
)
#else

LOCAL(void) write_multi_char (
int ch,
int num,
FILE *f,
int *pnumwritten
)
#endif /* WPRFLAG */
{
while (num-- > 0)
write_char(ch, f, pnumwritten);
}

#endif /* CPRFLAG */

/***
*void write_string(char *string, int len, int *pnumwritten)
*void write_string(char *string, int len, FILE *f, int *pnumwritten)
#ifdef WPRFLAG
*void write_string(wchar_t *string,
首页 上一页 8 9 10 11 12 下一页 尾页 11/12/12
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇STL 应用之set 下一篇快速计算32位数中1的位数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: