我正在查看我在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
的目的是什么,以及我可以在哪里找到有关它的使用的更多信息?我假设这是一个正则表达式,但正如我之前所说,我不能谷歌找出来。
答案 0 :(得分:3)
printf()有很长的基于C的历史记录。 %s
是'格式字符',表示“在此处插入字符串”。两个函数调用中字符串后面的额外参数是填充到格式字符占位符的值:
在第一个示例中,%s
将替换为command
变量的内容。在第二个示例中,第一个%s
将获得command
,第二个%s
将获得context->user
。
答案 1 :(得分:3)
%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
,请将其替换为{的内容{1}}作为字符串。
答案 2 :(得分:0)
这是一种格式标志。您可以查看“printf”手册页以获取更多信息。
基本上,每个%s将被相应的函数参数替换。 printf(“%s%s”,“hello”,“world”)将打印一个简单的“hello world”
答案 3 :(得分:0)
%s将简单地被字符串替换为
char a [15] =&#34;某些字符串&#34 ;;
printf(&#34;这是%s。&#34;,a);
所以输出将是
这是一些字符串。