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

C语言数字用逗号分隔

编程学习2021-10-2792360


正负整数从后向前每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.NET中快速访问注册表技巧

VB.NET中快速访问注册表技巧

vb.net中访问注册表变得非常的简单。我们可以用 microsoft.Win32 名称空间的 下的 registry 类 和  registryKey 类。 另外 My.Computer.Registry 也可以返回一个 Microsoft.Win32.Registry 类的实例。 下面就举几个小例子来说明vb.net访问注册表的方法。1,返回或创建一个注册表键Dim Key1 As Microsoft.Win32.RegistryKey Key1 = My.Compu...

 C++中指针的使用艺术

C++中指针的使用艺术

C++中指针的使用艺术 在C++编程中使用指针能有速度快,节约内存等优点,是很多C++程序员的最爱。但指针是一把双刃剑,用好了它,你就会发现指针有多么的方便,反之,你可能就头疼了,往往会出现意想不到的问题。   一.什么是指针:   其实指针就像是其它变量一样,所不同的是一般的变量包含的是实际的真实的数据,而指针只是一个指示器,它告诉程序在内存的哪块区域可以找到数据。   这是一个非常重要的概念,有很多程序和算法都是围绕指针设计的,如链...

用VB类实现文件对话框

用VB类实现文件对话框

用VB类实现文件对话框'类名:ComDlg.cls '作用:文件打开保存对话框 ' ' ' 'By:Apull '2007-5-21 'http://www.apull.net Option Explicit Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" ( _ pOpenfil...

致面向对象技术初学者的一封公开信

致面向对象技术初学者的一封公开信

 致面向对象技术初学者的一封公开信 Alistair Cockburn 著(1996 年2 月),袁峰 译介绍 首先我要解释一下为什么会写这封公开信。这似乎已经成了一种习惯,但这个步骤还是需要的。过去6 年中, 我曾经无数次地在饭店、酒吧、旅店大厅等各种地方以同一种方式度过愉快而漫长的夜晚:和同样追求真理、光明和智慧的伙伴一起探讨面向对象的真谛。现在,我已经可以回答很多当年我遇到的问题。这些同样的问题也在困扰着我的一位新同事,在一家饭店里,我花了整整一个晚上和他讨...