如何逐个字符地打印C字符串?

时间:2015-03-03 08:06:15

标签: c printf character

使用printf而不使用任何循环或分支?

4 个答案:

答案 0 :(得分:2)

递归是你的朋友:

int print_char_by_char(char * p)
{
  *p && print_char_by_char(p+1);
  printf("%c", *p);
  return 1;
}

int main(void)
{
  print_char_by_char("alk");
  return 0;
}

答案 1 :(得分:1)

扩展@alk的答案,你可以使用递归和指针来运行,以避免使用逻辑运算符:

#include <stdio.h>

void dummy(char *p);
void print(char *p);

void (*fp[])(char *) = {dummy, print};

void dummy(char *p)
{
    (void)p;
}

/**
 *  Read *p as bool (0 or 1) using bitwise operators
 *  Call print() recursively if 1
 *  Call dummy() if 0 and exits from function
 */
void print(char *p)
{
    char i = *p;

    i |= i >> 4;
    i |= i >> 2;
    i |= i >> 1;
    printf("%c", *p);
    fp[i & 1](p + 1);
}

int main(void)
{
    print("Hello world\n");
    return 0;
}

答案 2 :(得分:0)

嗯,你的问题是

  

如何逐字符地打印C字符串?

     

使用printf而不使用任何循环或分支?

最简单的答案是

#include<stdio.h>
int main()
  {
    char a[]="blablabla";
    printf("%s",a);
    return 0;
  }

这是你问题的答案。如果这不是您想要的,那么指定您的确切问题,提供更多详细信息

答案 3 :(得分:0)

@ qwe2004,告诉你的教授Stack Overflow社区同意它无法完成。如果他说可以做到,我们都有兴趣看到他聪明而狡猾的做法,并学习。 (告诉他我们也会批评隐藏的分支和逻辑测试。)