当前位置:首页 > 编程学习 > C语言数字用逗号分隔

C语言数字用逗号分隔

编程学习2021-10-2788510


正负整数从后向前每3个数字加逗号“,”分隔。


C语言数字用逗号分隔.jpg C语言数字用逗号分隔  编程 C++ 技术 第1张



#include <stdio.h>
#include <string.h>

#define LEN 30

//格式化数字为 12,345,678
char *formatnum(char *strbuf, long num)
{
    char tmp[LEN] = {0};
    char *p = strbuf;
    size_t len, index = 0;
    
    sprintf(tmp, "%ld", num); //把数字转换成字符串
    
    len = strlen(tmp);
    if ((num >= 0 && len <= 3) || (num < 0 && len <= 4)) //小于3位直接返回
    {
        strcpy(strbuf, tmp);
        return strbuf;
    }
    if (num < 0) //处理负数
    {
        *p = '-';
        p++;
        index = 1;
    }
    for (; index <= len; index++)
    {
        *(p++) = tmp[index];
        if ((len - index + 2) % 3 == 0 && len - index > 3) //每3个字符添加一个逗号
        {
            *(p++) = ',';
        }
    }
    return strbuf; //结果保存到strbuf,并返回这个字符串
}

int main()
{
    long num;
    while (1)
    {
        char str[LEN] = {0};
        scanf("%ld", &num);
        if (num == 0)
            break;
        printf("%s\n", formatnum(str, num)); //2种使用方法,直接输出
        printf("%s\n", str);                 //或者使用字符串变量输出
    }

    return 0;
}



扫描二维码推送至手机访问。

版权声明:本文由海阔天空发布,如需转载请注明出处。

本文链接:https://apull.net/html/20211027225430.html

标签: 编程C++技术
分享给朋友:

相关文章

VB获取光驱盘符

VB获取光驱盘符

VB获取光驱盘符Option Explicit Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" _ (ByVal nDrive As String) As Long 'GetLogicalDriveStrings-->获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径 Private Declare Function GetLogicalDriveStri...

VB.NET中如何扩充字符串进行固定宽度显示

VB.NET中如何扩充字符串进行固定宽度显示

  在VB.NET中,当你需要在控制台显示数据或准备好打印数据时,可能需要调整列宽以显示固定长度的数据。本文介绍了使用String对象的PadLeft方法和PadRight方法扩充字符串以进行固定宽度显示。PadLeft和PadRight方法      PadLeft和PadRight是字符串类的两个方法,可以分别使用它们在字符串的左边和右边填充空格。这两个方法多接受一个代表总长度的整型数,添加的空格数等于填充总长度减去字符串的当前长...

代码迷惑技术如何保护Java免遭逆向工程

代码迷惑技术如何保护Java免遭逆向工程

很少有问题比程序员遇到不访问无法利用的源代码就无法解决的漏洞更令人沮丧的了。你是否在通过一个在线开源库修补代码,或正在调用常用操作系统例行程序;你可能每周都要花时间处理不是由你编写,因而也无法访问其源代码的代码。因为Java字节码包含许多和原始代码相同的信息,所以很容易对Java类文件执行逆向工程。另外,Java程度以其“一旦编写,随处运行”特性而闻名。虽然并非Java语言的专利,但代码反编译从未在Java开发者之中得到如此公开或普遍地利用。反编译的对...

ASP错误提示大全

ASP错误提示大全

Microsoft VBScript 语法错误(0×800A03E9)–>内存不足Microsoft VBScript 语法错误(0×800A03EA)–>语法错误Microsoft VBScript 语法错误(0×800A03EB)–>缺少’:’Microsoft VBScript 语法错误(0×800A03ED)–>缺少’(’Mi...