[英]c - how can I print specified count of a char in a line
我想打印一条类似于以下内容的行:
====================================
而且我需要控制char的计数,并能够指定要打印的char。
我不想使用循环。
是否可以使用单个printf()
语句来做到这一点?
@Update
我问这是因为有时我会以这种方式使用printf:
printf("%10s\\n", "abc");
因此,如果printf可以做到这一点,那么就可以按照我的要求做,我不确定...现在我知道它不能...
好的,我编写了一个简单的util函数来执行此操作:
#include <stdio.h>
void printRepeatChar(char c, int count) {
char cs[count+1];
int i;
for(i=0; i<count; i++)
cs[i] = c;
cs[count] = '\0';
printf("%s\n", cs);
}
int main(int argc, char * argv[]) {
printRepeatChar('-', 6*4);
}
也许使用string.h
memset()
代替直接循环使代码更短,就像在答案中一样。
并且,谢谢大家的帮助。
#include <stdio.h>
#include <string.h>
void PrintStuff( char to_print, int length ) {
// adjust buffer size as desired
char buffer[256];
// -1 for null terminator
if( length > sizeof(buffer)-1 ) length = sizeof(buffer)-1;
// fill buffer with desired character
memset( buffer, to_print, length );
// add null terminator
buffer[length] = 0;
// print to output
puts( buffer );
}
int main() {
PrintStuff( '=', 11 );
return 0;
}
并回答该子问题:不,printf不能将字符作为格式设置规则重复。 填充时只能重复空格或0。
#include <stdio.h>
#include <string.h>
int main(void) {
char c='=';
char a[20];
memset(a,c,(sizeof(a)-1));
a[19] = '\0';
printf("%s\n",a);
return 0;
}
动态内存分配和字符扫描可以添加到此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.