我有以下程序:
#include <stdio.h>
#include <stdlib.h>
int main()
{
static char string[12];
int length,c,d;
printf("Enter a string :");
gets(string);
length=strlen(string);
printf("\nLength of the string is %d",length);
for(c=0;c<=length-2;c++)
{
d=c+1;
printf("\t%.*s\n",d,string);
}
for(c=length;c>=0;c--)
{
d=c+1;
printf("\t%.*s\n",d,string);
}
}
我对%.*s
语句中printf
的使用感到非常困惑。我知道%s
用于显示字符串,但我对此程序中.*
之前s
的使用感到困惑。此外,printf语句中的引号内只提到了一种数据类型(%s
),但printf
语句中提到了两个变量。
答案 0 :(得分:6)
它是一个精度组件,它指定字符串转换的最大字节数。星号(*
)使用整数参数,该参数指定要使用的值(用于精度)。
例如,以下代码:
#include <stdio.h>
int main(int argv, char **argc)
{
char *s = "hello, world";
printf("%.*s\n", 4, s);
return 0;
}
给出输出:
hell
答案 1 :(得分:4)
format语句可以允许宽度和精度值。因此,要打印可变长度的字符串,请指定printf("%.*s", length, string)
。 length
代替星号。