我知道这可能不是发布的地方但是,我确实做了我需要的工作,但我很难理解它是如何工作的
//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部分?
答案 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|