标签: printf

字符串和字符与printf

我用的使用混淆%c%s下面的C程序

#include<stdio.h>

    void main()
    {
     char name[]="siva";
     printf("%s\n",name);
     printf("%c\n",*name);
    }
Run Code Online (Sandbox Code Playgroud)

输出是

siva
s
Run Code Online (Sandbox Code Playgroud)

为什么我们需要使用指针来显示字符%c,并且字符串不需要指针

我使用时收到错误

printf("%c\n", name);
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

str.c: In function ‘main’:
str.c:9:2: warning: format ‘%c’ expects type ‘int’, but argument 2 has type ‘char *’
Run Code Online (Sandbox Code Playgroud)

c printf

42
推荐指数
4
解决办法
48万
查看次数

sprintf()没有在C中尾随空格

有没有办法使用C sprintf()函数而不在其输出的末尾添加'\ 0'字符?我需要在固定宽度字符串的中间写入格式化文本.

c string null printf

41
推荐指数
3
解决办法
7万
查看次数

printf用于显示用0填充的指针的正确用法是什么

在C中,我想使用printf来显示指针,以便它们正确排列,我想用0填充它们.

我的猜测是,正确的方法是:

printf("%016p", ptr);

这有效,但是这个gcc抱怨以下消息:

warning: '0' flag used with ‘%p’ gnu_printf format

我已经谷歌搜索了一下,以下主题是关于同一主题,但并没有真正给出解决方案.

http://gcc.gnu.org/ml/gcc-bugs/2003-05/msg00484.html

阅读它,似乎gcc抱怨的原因是我建议的语法没有在C99中定义.但我似乎无法找到任何其他方式以标准批准的方式做同样的事情.

所以这是双重问题:

  • 我的理解是否正确,这种行为不是由C99标准定义的?
  • 如果是这样,是否有标准的,可移植的方式这样做?

c printf pointers c99

41
推荐指数
4
解决办法
3万
查看次数

正确的size_t:%zu或%Iu的printf格式说明符?

我想在C++中使用Microsoft Visual Studio 2010 打印出size_t变量的值printf(我想使用printf而不是<<在这段特定的代码中,所以请不要回答告诉我应该使用它<<).

根据帖子

平台无关size_t c中的格式说明符?

正确的平台无关方式是使用%zu,但这似乎在Visual Studio中不起作用.Visual Studio文档

http://msdn.microsoft.com/en-us/library/vstudio/tcxf1dw6.aspx

告诉我,我必须使用%Iu(使用大写i,而不是小写l).

微软是否不遵守这些标准?或者自C99以来标准是否已更改?或者C和C++之间的标准是不同的(这对我来说似乎很奇怪)?

c c++ printf visual-studio-2010 format-specifiers

41
推荐指数
4
解决办法
5万
查看次数

如何在bash中打印一些文本并用空格填充到一定宽度?

我在一个带有变量的bash脚本中回显一些文本,并且想要填充该变量,以便它总是在右边有适当的空格,以保持文本的其余部分对齐.

这是我想要的一个例子:

Echoing random number 1080    [ OK ]
Echoing random number 443     [ OK ]
Echoing random number 34842   [ OK ]
Run Code Online (Sandbox Code Playgroud)

数值的长度可以变化(可能不超过5或6位).

我知道printf可以执行此操作并通过执行以下操作右对齐变量:

printf "Echoing random number %5s   [ OK ]" $RAND_NUM
Run Code Online (Sandbox Code Playgroud)

但是,这会格式化文本,如下所示:

Echoing random number  1080   [ OK ]
Echoing random number   443   [ OK ]
Echoing random number 34842   [ OK ]
Run Code Online (Sandbox Code Playgroud)

当然只是用空格回声并不起作用:

echo "Echoing random number ${RAND_NUM}   [ OK ]"
Run Code Online (Sandbox Code Playgroud)

产生这个:

Echoing random number 1080   [ OK ]
Echoing random number 443   [ OK ] …
Run Code Online (Sandbox Code Playgroud)

printing variables bash formatting printf

40
推荐指数
3
解决办法
4万
查看次数

哪个sprintf/snprintf更安全?

我想知道这两个选项中哪一个更安全:

#define MAXLEN 255
char buff[MAXLEN + 1]
Run Code Online (Sandbox Code Playgroud)
  1. sprintf(buff, "%.*s", MAXLEN, name)

  2. snprintf(buff, MAXLEN, "%s", name)

我的理解是两者都是一样的.请建议.

c unix security printf secure-coding

40
推荐指数
6
解决办法
6万
查看次数

Arduino sprintf浮动没有格式化

我有这个arduino草图,

char temperature[10];
float temp = 10.55;
sprintf(temperature,"%f F", temp);
Serial.println(temperature);
Run Code Online (Sandbox Code Playgroud)

温度打印出来

? F
Run Code Online (Sandbox Code Playgroud)

有关如何格式化浮点数的任何想法?我需要它是一个字符串.

c++ printf arduino

40
推荐指数
2
解决办法
5万
查看次数

如果浮点组件不是.00 sprintf/printf,则仅显示小数点

我非常格式化浮点数,但如果没有相关的浮点数,则希望它显示为整数.

  • 1.20 - > 1.2x
  • 1.78 - > 1.78x
  • 0.80 - > 0.8x
  • 2.00 - > 2x

我可以通过一些正则表达式实现这一点,但想知道是否有sprintf这样做的唯一方法?

我喜欢懒洋洋地在红宝石中这样做:

("%0.2fx" % (factor / 100.0)).gsub(/\.?0+x$/,'x')
Run Code Online (Sandbox Code Playgroud)

ruby floating-point printf

39
推荐指数
4
解决办法
2万
查看次数

sprintf - 重复参数

我想格式化一个字符串,sprintf但重复多次参数.看到..

$str = "Str 1: %s - Str 2: %s - Str 2 again: %s";
Run Code Online (Sandbox Code Playgroud)

考虑到要格式化的字符串,我想重复第二次arg两次.

echo sprintf($str, "I'm string 1", "My name is string 2");
Run Code Online (Sandbox Code Playgroud)

想要的结果如下:

Str 1: I'm string 1 - Str 2: My name is string 2 - Str 2 again: My name is string 2
Run Code Online (Sandbox Code Playgroud)

有办法吗?

php printf

39
推荐指数
1
解决办法
2万
查看次数

如何检查两个格式字符串是否兼容?

例子:

"Something %d"        and "Something else %d"       // Compatible
"Something %d"        and "Something else %f"       // Not Compatible
"Something %d"        and "Something %d else %d"    // Not Compatible
"Something %d and %f" and "Something %2$f and %1$d" // Compatible
Run Code Online (Sandbox Code Playgroud)

我认为应该有一些C功能,但我没有得到任何相关的搜索结果.我的意思是编译器正在检查格式字符串和参数是否匹配,因此已经编写了用于检查它的代码.唯一的问题是我怎么称呼它.

我正在使用Objective-C,所以如果有一个Objective-C特定的解决方案也没关系.

c compatibility printf objective-c format-string

39
推荐指数
2
解决办法
872
查看次数