printf("?", count, char)
캐릭터 count
시간 을 반복하는 것과 같은 것을하고 싶습니다 .
이를 수행하기위한 올바른 형식 문자열은 무엇입니까?
편집 : 예, printf()
루프에서 호출 할 수 있다는 것이 분명 하지만 피하고 싶었던 것입니다.
printf("?", count, char)
캐릭터 count
시간 을 반복하는 것과 같은 것을하고 싶습니다 .
이를 수행하기위한 올바른 형식 문자열은 무엇입니까?
편집 : 예, printf()
루프에서 호출 할 수 있다는 것이 분명 하지만 피하고 싶었던 것입니다.
printf
원하는 것을 수행하는 형식 이 없다는 것 입니다), 귀하의 의견은 귀하가 무엇을 요구하는지 확실하지 않게 만듭니다. 함수에 전달되는 형식 문자열과 인수에 대해 이야기합니다. 어떤 기능에 대해 질문하고 있습니까? 당신이 우리에게 말하지 않는 것이있는 것 같습니다.
답변:
짧은 답변-예, 긴 답변 : 원하는 방식이 아닙니다.
가변 너비를 허용하는 printf 의 % * 형식을 사용할 수 있습니다 . 그리고 인쇄 할 값으로 '0'을 사용 하면 왼쪽이 0으로 채워진 오른쪽 정렬 텍스트와 결합 됩니다.
printf("%0*d\n", 20, 0);
생성 :
00000000000000000000
내 혀가 내 뺨에 단단히 고정 된 상태에서이 작은 공포 쇼 코드를 제공합니다.
때때로 당신 은 왜 당신이 나머지 시간 동안 그렇게 열심히 노력하는지 기억하기 위해 나쁜 일을해야 합니다.
#include <stdio.h>
int width = 20;
char buf[4096];
void subst(char *s, char from, char to) {
while (*s == from)
*s++ = to;
}
int main() {
sprintf(buf, "%0*d", width, 0);
subst(buf, '0', '-');
printf("%s\n", buf);
return 0;
}
4096
. 나는 당신이 malloc
버퍼를 할 수 있다고 생각합니다 .
다음 기술을 사용할 수 있습니다.
printf("%.*s", 5, "=================");
이것은 "====="
Visual Studio에서 나를 위해 작동하며 모든 C 컴파일러에서 작동하지 않아야 할 이유가 없습니다.
C ++에서는 std :: string을 사용하여 반복되는 문자를 얻을 수 있습니다.
printf("%s",std::string(count,char).c_str());
예를 들면 :
printf("%s",std::string(5,'a').c_str());
산출:
aaaaa
그와 같은 일은 없다. 또는를 사용하여 루프를 작성 printf
하거나 puts
문자열 카운트 횟수를 새 문자열로 복사하는 함수를 작성해야합니다.
printf
그렇게하지 않습니다 printf
. 단일 문자를 인쇄하기에는 과잉입니다.
char c = '*';
int count = 42;
for (i = 0; i < count; i ++) {
putchar(c);
}
이것이 비효율적이라고 걱정하지 마십시오. putchar()
출력을 버퍼링하므로 필요한 경우가 아니면 각 문자에 대해 물리적 출력 작업을 수행하지 않습니다.
printf
형식 문자열은 "%c"
입니다. 그러나 사용할 필요가 없으며이 printf
경우 형식 문자열이 전혀 필요하지 않습니다. (단순히 더 없다 printf
문자를 여러 번 인쇄 할 형식 문자열은 있지만, 작업을 수행하기 위해 다른 더 좋은 방법이 있습니다.)
alloca () 함수를 지원하는 컴파일러가 있다면 이것이 가능한 해결책입니다.
printf("%s", (char*)memset(memset(alloca(10), '\0', 10), 'x', 9));
기본적으로 '\ 0'으로 채워진 스택에 10 바이트를 할당하고 처음 9 바이트는 'x'로 채워집니다.
C99 컴파일러가있는 경우 다음은 더 깔끔한 솔루션 일 수 있습니다.
for (int i = 0; i < 10; i++, printf("%c", 'x'));
putchar('x')
대신 printf("%c", 'x')
.
#include <stdio.h>
#include <string.h>
void repeat_char(unsigned int cnt, char ch) {
char buffer[cnt + 1];
/*assuming you want to repeat the c character 30 times*/
memset(buffer,ch,cnd); buffer[cnt]='\0';
printf("%s",buffer)
}
이 작업을 수행하는 기능을 만들고 사용할 수 있습니다.
#include <stdio.h>
void repeat (char input , int count )
{
for (int i=0; i != count; i++ )
{
printf("%c", input);
}
}
int main()
{
repeat ('#', 5);
return 0;
}
이것은 출력됩니다
#####
i < count
. 그렇지 않으면 count에 대한 음수 입력으로 인해 원하지 않는 인쇄가 많이 발생할 수 있습니다.
이런 식으로하는 것 같아요.
void printchar(char c, int n){
int i;
for(i=0;i<n;i++)
print("%c",c);
}
printchar("*",10);