我想打印类似如下的行:
====================================
我需要控制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);
}
可能使用memset()
中的string.h
代替直接循环使代码缩短,就像在答案中一样。
并且,谢谢大家的帮助。
答案 0 :(得分:3)
#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。
答案 1 :(得分:2)
#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;
}
可以添加动态内存分配和字符扫描。