C长度间距

时间:2018-04-30 16:07:07

标签: c

我知道这可能不是发布的地方但是,我确实做了我需要的工作,但我很难理解它是如何工作的

//Variables
char FirstName[100];
char LastName[100];
//Coding
printf("Please enter your first name: ");
scanf("%s", FirstName);
printf("Please enter your last name: ");
scanf("%s", LastName);
printf("%s %s\n", FirstName, LastName);
printf("%d %*s %d", strlen(FirstName),(strlen(FirstName)-2),"", strlen(LastName));

我想让它输出名字和姓氏,然后在它下面显示每个字符串的长度。我做了它也把数字放在字符串的开头并且它可以工作,但是我不确定它是如何工作的,有人可以解释最后的printf是如何工作的吗?主要是%* s部分?

1 个答案:

答案 0 :(得分:2)

  
      
  • 宽度未在格式字符串中指定,但作为附加   前面的整数值参数   必须格式化的参数。
  •   

例如:printf("%*s", 8, value);printf("%8s", value);等同。

从@Ondrej讲述

#include <stdio.h>

int main() {
    int precision = 8;
    int biggerPrecision = 16;
    const char *greetings = "Hello world";

    printf("|%.8s|\n", greetings);
    printf("|%.*s|\n", precision , greetings);
    printf("|%16s|\n", greetings);
    printf("|%*s|\n", biggerPrecision , greetings);

    return 0;
}

我们得到输出:

|Hello wo|
|Hello wo|
|     Hello world|
|     Hello world|