不太懂 瞎搞了下

墨一世红颜倾醉己 霁天谁与话风流
修仙``````````````````````````````````````````````
程序代码:
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
char* TransForm(char* p, int iVar);
void main(void)
{
char cString[1024];
printf("%s\n", TransForm(cString, 1234567));
printf("%s\n", TransForm(cString, 0));
printf("%s\n", TransForm(cString, -1234567));
}
char* TransForm(char* p, int iVar)
{
int iIndex; // 循环计数器
int iCount; // 千位计数器
bool lNegative; // 是否负数的标志
char* pBuffer = p; // 记录缓冲区的起始地址(p是动指针, pBuffer是不动的, 用于返回)
if (iVar == 0)
{
// 如果传入的数值为0直接返回"0"
*p++ = '0';
*p = '\0';
return pBuffer;
}
lNegative = (iVar < 0);
if (lNegative)
{
iVar = -iVar; // 取正数计算
}
iIndex = 1;
iCount = 0;
while (iVar > 0)
{
if (iCount < 3)
{
iCount++;
}
else
{
*p++ = ',';
iCount = 1;
}
*p++ = '0' + iVar % 10;
iVar = iVar / 10;
iIndex++;
}
if (lNegative) // 补回负数的标识
{
*p++ = '-';
}
*p = '\0'; // 字符串结束符
return _strrev(pBuffer); // 反转缓冲区之后返回
}
// 其实可以不返回缓冲区的地址, 改为返回字符串的字符数, 为0时失败.
程序代码:
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
char* TransForm(char cBuffer[], int iVar);
void main(void)
{
char cString[1024];
// Hello,world!的翻版
// 原先是这样写的
// char cString[] = "Hello,world!";
// printf("%s\n", cString);
// 套上面的格式, 成下面这样
printf("%s\n", TransForm(cString, 1234567));
printf("%s\n", TransForm(cString, 0));
printf("%s\n", TransForm(cString, -1234567));
// 这种套换方式, 是程序语言的基本用法
// 注意与下面变换对比:
// printf("%d\n", 1234567);
// 这样就可以猜到printf()内部的动作了
// 如果要回避printf(), 可以
// puts(TransForm(cString, 1234567));
// 不妨比较前后两种版本(printf()版和puts()版)EXE文件的大小
}
char* TransForm(char cBuffer[], int iVar)
{
int iIndex; // 循环计数器
int iCount; // 千位计数器
bool lNegative; // 是否负数的标志
char* p = cBuffer; // 记录缓冲区的起始地址(p是动指针, cBuffer是不动的, 用于返回)
if (iVar == 0)
{
// 如果传入的数值为0直接返回"0"
*p++ = '0';
*p = '\0';
return cBuffer;
}
lNegative = (iVar < 0);
if (lNegative)
{
iVar = -iVar; // 取正数计算
}
iIndex = 1;
iCount = 0;
while (iVar > 0)
{
if (iCount < 3)
{
iCount++;
}
else
{
*p++ = ',';
iCount = 1;
}
*p++ = '0' + (iVar % 10);
iVar /= 10;
iIndex++;
}
if (lNegative) // 补回负数的标识
{
*p++ = '-';
}
*p = '\0'; // 字符串结束符
return _strrev(cBuffer); // 反转缓冲区之后返回
}
// 其实可以不返回缓冲区的地址, 改为返回字符串的字符数, 为0时失败.
