在这个程序中%。* s的用途是什么

时间:2013-08-11 06:26:15

标签: c

我有以下程序:

#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语句中提到了两个变量。

2 个答案:

答案 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代替星号。