我正在查看在
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 上请求超级用户权限时用户看到的对话框提供文本,如该屏幕截图所示
本例中的
%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 找到答案。
%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
的内容作为字符串。
printf() 有着悠久的基于 C 的历史。
%s
是一个“格式字符”,表示“在此处插入字符串”。两个函数调用中字符串后面的额外参数是填充格式字符占位符的值:
在第一个示例中,
%s
将替换为 command
变量的内容。在第二个示例中,第一个 %s
将获得 command
,第二个 %s
将获得 context->user
。
这是一个格式标志。您可以查看“printf”手册页以获取更多信息。
基本上,每个 %s 都会被相应的函数参数替换。 printf("%s %s", "hello", "world") 将打印一个简单的“hello world”
%s 将简单地替换为
等字符串char a[15]="某个字符串";
printf("这是%s。",a);
所以输出将是
这是一些字符串。
f (!strcmp(context->user, "root")) msg = g_strdup_printf (_("输入您的密码以执行" "管理任务 " "应用程序 '%s' 允许您" "修改您的 " "系统的基本部分。"),命令);