我想打印一条类似于以下内容的行:
====================================我需要控制这个字符的计数,并且能够指定要打印哪个字符。
我不想用循环。
用一个printf()语句就可以做到这一点吗?
@更新
我这样问是因为有时我用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而不是直接循环使代码更短,就像在答案中一样。
谢谢大家的帮助。
发布于 2014-11-27 15:48:51
#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;
}http://ideone.com/RjPr83
要回答子问题:不行,printf不能作为格式化规则重复字符。它只能在填充时重复空格或0。
发布于 2014-11-27 15:50:35
#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;
}可以添加动态内存分配和字符扫描。
https://stackoverflow.com/questions/27174310
复制相似问题