C长度间距

C长度间距,c,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\

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

//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部分

  • 宽度不是在格式字符串中指定的,而是作为附加值指定的 前的整数值参数 必须格式化的参数
e、 g:
printf(“%*s”,8,值)等于
printf(“%8s”,值)

由@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;
}
  • 宽度不是在格式字符串中指定的,而是作为附加值指定的 前的整数值参数 必须格式化的参数
e、 g:
printf(“%*s”,8,值)等于
printf(“%8s”,值)

由@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;
}
只是,只是。