2011-08-09 59 views
1

我正在查看下面的代码,我在libgksu中找到,我在想这个字符串中的%s是什么。我无法使用Google,因为它在搜索过程中删除了百分位等字符,只留下了's'作为搜索字词。%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。例如,上述if语句的else组分是

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的目的是什么,我可以在哪里找到更多关于它的用途?我假设这是一个正则表达式,但正如我之前所说,我不能谷歌找出。

回答

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,与context->user的内容作为字符串替换它。

0

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

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

+0

(顺便说一句,'s'标志表示'串') –

3

printf()有一个很长的基于C的历史。 %s是'格式字符',表示“在此插入字符串”。在两个函数调用后弦额外的参数,以填补成格式字符占位符值:

在第一个例子,%s将与command变量的内容所取代。在第二个示例中,第一个%s将获得command,第二个%s将获得context->user

0

%s将简单地通过串等

炭A [15] = “一些字符串” 取代;( “这为%s”,一)

的printf;

所以输出将是

这是一些字符串。

相关问题