关于printf 输出不定长度字符串

(perl)
就是按照要求输出一定长度字符串
例如输入 20 zhong hua ren ming
则输出长度为20 的字符串
30 dian nao 则输出 长度为30 的
那么printf 里面如何写?%%ds、 %{%d}s 都不行哦
print("%%ds",$length,$_)
请各位帮忙!
最新回答
鬼怪

2024-12-01 01:32:27

你是想输出一个变量可控的长度的字符串是吧,下面这样输出可以:

#include<stdio.h>
#include<string.h>
void main()
{
int len = 0;
char str[512] = {0};
scanf("%d", &len);
getchar();
gets(str);
printf("output is [%*.*s]\n", len, len, str);
}

如:输入7 zhong hua
则输出为zhong h
清旖

2024-12-01 01:36:51

perl中 printf 完全是模仿 C 中的 printf 的,因为C中替代是逐字符扫描的,所以遇到 %% 的时候就直接转意成输出 % 字符了,即printf中 %的转意是不是叠加,所以 %%ds 等于输出 %ds,你要先这样用必须先构造printf的 format 字符段。给你写下应该怎么做

printf "%.${length}s", $_

还有就是只有printf才支持这样用,print是不行的

小修改了下少了个点, $ 应该在括号外面。你用这个试下就知道,昨天急没有亲自试,抱歉
南极星老奶奶

2024-12-01 01:26:21

a[10]="hello world"
想输出前5个。定义a[5]='\0'
printf("%s",a);就行,最好定义一个函数,否则会改变数组a
感情终究破碎

2024-12-01 01:13:44

#include stdio.h
#include string.h
int main()
{
char a[111];
gets(a);
printf(len:%d\nfirst char:%c\n, strlen(a), *a);
}
不痴情罪名

2024-12-01 01:00:40

你是问什么呢?
printf输出字符串的方法就是:

char a[]="asdfasdfasdfasdf"
printf("%s",a);