5

我有以下程序:

#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用于显示字符串,但我对这个程序中.* before的用法感到困惑。s此外%s,printf 语句中的引号内只提到了一种数据类型 ( ),但语句中提到了两个变量printf

4

2 回答 2

6

它是一个精度组件,它指定字符串转换的最大字节数。星号 ( *) 使用整数参数,它指定要使用的值(用于精度)。

例如,以下代码:

#include <stdio.h>

int main(int argv, char **argc)
{
    char *s = "hello, world";
    printf("%.*s\n", 4, s);
    return 0;
}

给出输出:

hell
于 2013-08-11T06:31:48.603 回答
4

格式语句可以允许宽度和精度值。因此,要打印可变长度的字符串,然后指定printf("%.*s", length, string). 用length星号代替。

于 2013-08-11T06:33:32.317 回答