gpt4 book ai didi

c - C 编程中如何调用变量指定 printf 的格式

转载 作者:行者123 更新时间:2023-12-02 02:42:16 24 4
gpt4 key购买 nike

我想在C编程中使用变量来指定printf的格式。

我是一个 C 编程新手,不过已经练习过 bash shell 脚本。

在 bash 脚本中,我可以使用变量来指定 printf 的格式,如下所示。

#!/bin/bash

### Variable
format="%4s%4d %8s\n"

### Main
printf "$format" $1 $2 $3

那么,C语言编程中是否有类似上面的方式呢?

用C语言可以吗?

printf 格式的字符串包括字符和数字。

我听说 C 编程对它们中的每一个都使用不同的声明;即 int 或 char。

最佳答案

Is there similar way like the above [format="%4s%4d %8s\n"] in C programming?
Is it possiblein C?

是的,解决这两个问题有多种方法。
其中,可以使用sprintf()来准备缓冲区:

char format[80] = {0};//create editable char array
int a = 12;
char buf1[] = {"this is string 1"};
char buf2[] = {"this is string 2"};

sprintf(format, "%s", "%4s%4d %8s\n");
printf(format, buf1, val, buf2);

更接近您在示例中所做的操作 ( format="%4s%4d %8s\n" ),您可以简单地将 format 定义为 string literal :

char *format = "%4s%4d %8s\n";//string literal not editable

或者,创建一个已初始化但可编辑的字符数组

char format[] = {"%4s%4d %8s\n"};//editable, but only up to 
//strlen("%4s%4d %8s\n");
//(+ NULL, which is implied when using "...".)

请注意,C 还提供了一个内置功能,可以在输出 float 时启用运行时精度设置:

double val = 22.123445677890;
int precision = 3;

printf("%.*f", precision , val);

将输出22.123

关于c - C 编程中如何调用变量指定 printf 的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63377679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com