我有一个代码片段,其中有一个声明
printf("%*.*s");
%*.*s
是什么意思?
代码是
char *c="**********";
int i,n=4;
for(i=1;i<=n;i++)
{
printf("%*.*s\n",i,i,c);
}
输出是:
*
**
***
****
答案 0 :(得分:6)
阅读printf
的规范:
Focus
%[flags][width][.precision][length]specifier
字符串
s
宽度未在格式字符串中指定,而是作为必须格式化的参数前面的附加整数值参数。
对于字符串,宽度为要打印的最小字符数(可以添加填充)。
*
未在格式字符串中指定精度,但作为必须格式化的参数前面的附加整数值参数。
对于字符串,精确度是要打印的最大字符数。
您的程序未传递必需的可选参数(witdh,precission,要打印的字符串)。行为将是未定义的(可能是崩溃)。
答案 1 :(得分:4)
首先,让我澄清一下,此处格式字符串中的<input type="text" name="search" id="search">
<div class="row carousel-row lss">
<div class="col-xs-8 col-xs-offset-2 slide-row">
<div id="carousel-1" class="carousel slide slide-carousel" data-ride="carousel">
<!-- Indicators -->
<!-- <ol class="carousel-indicators lsse">
<li data-target="#carousel-1" data-slide-to="0" class="active"></li>
<li data-target="#carousel-1" data-slide-to="1"></li>
<li data-target="#carousel-1" data-slide-to="2"></li>
</ol> -->
<!-- Wrapper for slides -->
<div class="carousel-inner">
<div class="item active">
<img src="uploads/<?php echo $viewjobregisterid; ?>/<?php echo $viewjobsid; ?>/<?php echo $imagefile5; ?>" alt="Image" style="width: 500px;height: 186px;">
</div>
</div>
</div>
<div class="slide-content">
<h4><?php echo $myjobs1["title"]; ?></h4>
<p><?php echo $myjobs1["description"]; ?></p>
</div>
<div class="slide-footer">
<span class="pull-right buttons">
<button class="btn btn-sm btn-info" onclick="relocateTo('jobtitle.php?jobtitleid=<?php echo $myjobs1["viewjobsid"]; ?>')">View Job</button>
</span>
</div>
</div>
</div>
不适用于打印*
charcater(s)本身。在这种情况下,它们确实具有特殊意义。
在你的情况下,
*
第一个 printf("%*.*s");
是字段宽度,第二个*
一个(确切地说,*
)表示精度。
.*
都需要一个*
参数来提供相应的值。
引用标准,
如上所述,字段宽度或精度或两者可以用星号表示。在这种情况下,
int
参数提供字段宽度或精度。指定字段宽度或精度或两者的参数应在要转换的参数(如果有)之前(按此顺序)出现。负字段宽度参数被视为 - 标志,后跟正字段宽度。使用负精度参数,就好像省略了精度一样。
因此,要显示的转换说明符的通用表单是
int
请注意 %[flags]<field width><precision><length modifier>[conversion specifier character]
中的所有元素都是可选的,只有<>
和[flags]
是强制性的。也就是说,要求说
零个或多个标志
因此,基本上使[conversion specifier character]
也可选。
有关详细信息,请参阅[flags]
标准,章节§7.21.6.1。
答案 2 :(得分:3)
您需要将此语句的3个参数传递为printf("%*.*s",a,b,str);
,其中a
和b
为整数,str
为字符串。
它打印a
个b
个字符,其中str
个b
个字符为输出的最后b-a
个字符。首先 Private Sub sbloadBlog()
Try
Dim unqstr As String = Request.QueryString("id").ToString()
unqstr = unqstr.Substring(0, unqstr.IndexOf("-"))
Dim x As String = "select distinct Title as url, img, blog_desc from Blog_Gallery_AYS where unqid ='" + unqstr + "'"
Dim dt As New DataTable
dt = Dal.GettDS(x).Tables(0)
x = ""
x += "<p>"
For Each dr As DataRow In dt.Rows
x += "<h2>'" + dr("url") + "'</h2>"
x += "<p>'" + dr("blog_desc") + "' </h2>"
x += "</br>"
x += "</br>"
x += "<img src='" + dr("img").ToString().Replace("~/", "") + "'/>"
Next
x += "</p>"
x += x.Replace("'", """")
divblogdetail.InnerHtml = x
Catch ex As Exception
End Try
End Sub
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Request.QueryString("id") Is Nothing Then
sbloadBlog()
End If
End Sub
个字符为空格(&#39;&#39;)。
答案 3 :(得分:0)
。*未在格式字符串中指定精度,但作为必须格式化的参数之前的附加整数值参数。
printf(&#34;%。* s \ n&#34;,20,&#34; rabi&#34;);