printf / sprintf 问题与删除登录号码

printf / sprintf issue with remove sign on numbers

本文关键字:删除 登录 号码 问题 sprintf printf      更新时间:2023-10-16

我有一个可能是负数或正数的数字,我希望它从sprintf()中弹出,没有负号或正号。我该怎么做?

我尝试了%d % d %- d %+ d % -d % +d,但没有一个有效。

我尝试了 gcc 4.8.2 和 g++ 4.8.2,但它不起作用。这是 gcc 中的错误吗?

没有应用绝对值功能的格式字符串。

这是你必须做的:

#include <stdio.h>
#include <math.h>
void main()
{
  int num = -6000;
  printf("%dn", abs(num));
}
  • %d 会将 34 渲染为 34,将 -34 渲染为 -34
  • % d 会将 34 渲染为(空格)+ 34,将 -34 渲染为 -34
  • %+d 会将 34 渲染为 +34,将 -34 渲染为 -34
  • "%5d 会将 34 渲染为(三个空格)+ 34 和 -34 渲染为(两个空格)+ -34 。它们都将使用字段大小 5。
  • "%-5d会将 34 渲染为 34 +(三个空格),将 -34 渲染为 -34 +(两个空格)。它们都将使用字段大小 5,但由于-而保留对齐。

更长,不太适合,但我认为它工作得更快。

您可以使用条件运算符更改 prinf(或 sprintf)参数列表中的符号,而不是添加数学库。

#include <stdio.h>
int main(void)
{
    int n[3] = {-100, 0, 100};
    for (int i = 0; i < 3; ++i) {
        printf("%dn", (n[i] < 0) ? -n[i] : n[i]);
    }
    return 0;
}