字符串中的 %s 是什么意思?

问题描述 投票:0回答:5

我正在查看在

libgksu
中找到的以下代码,我想知道字符串内的
%s
是做什么的。我无法使用 Google 来实现此目的,因为它在搜索过程中删除了百分位数等字符,只留下“s”作为搜索词。

if (!strcmp(context->user, "root"))
        msg = g_strdup_printf (_("<b><big>Enter your password to perform"
                     " administrative tasks</big></b>\n\n"
                     "The application '%s' lets you "
                     "modify essential parts of your "
                     "system."),
                   command);

这段代码的目的是为应用程序在 Linux 上请求超级用户权限时用户看到的对话框提供文本,如该屏幕截图所示

enter image description here

本例中的

%s
是包含请求权限的应用程序名称的变量,但它并不那么简单,因为我已经在完全不同的上下文中看到了整个代码中使用的
%s
。例如,上面
else
语句的
if
组件是

else
    msg = g_strdup_printf (_("<b><big>Enter your password to run "
                 "the application '%s' as user %s"
                 "</big></b>"),
               command, context->user);

%s
用于标记应用程序和用户的名称。有人可以告诉我
%s
的用途是什么以及在哪里可以找到有关其用途的更多信息吗?我假设这是一个正则表达式,但正如我之前所说,我无法通过 Google 找到答案。

printf
5个回答
6
投票

%s 是字符串的 C 格式说明符。

msg = g_strdup_printf (_("<b><big>Enter your password to run "
                         "the application '%s' as user %s"
                         "</big></b>"),
                         command, context->user);

表示“在您看到第一个

%s
的地方,将其替换为
command
的内容作为字符串,在您看到第二个
%s
的地方,将其替换为
context->user
的内容作为字符串。


4
投票

printf() 有着悠久的基于 C 的历史。

%s
是一个“格式字符”,表示“在此处插入字符串”。两个函数调用中字符串后面的额外参数是填充格式字符占位符的值:

在第一个示例中,

%s
将替换为
command
变量的内容。在第二个示例中,第一个
%s
将获得
command
,第二个
%s
将获得
context->user


0
投票

这是一个格式标志。您可以查看“printf”手册页以获取更多信息。

基本上,每个 %s 都会被相应的函数参数替换。 printf("%s %s", "hello", "world") 将打印一个简单的“hello world”


0
投票

%s 将简单地替换为

等字符串

char a[15]="某个字符串";

printf("这是%s。",a);

所以输出将是

这是一些字符串。


-1
投票

f (!strcmp(context->user, "root")) msg = g_strdup_printf (_("输入您的密码以执行" "管理任务 " "应用程序 '%s' 允许您" "修改您的 " "系统的基本部分。"),命令);

© www.soinside.com 2019 - 2024. All rights reserved.