Использование printf и без использования циклов или разветвлений?Как вы печатаете строку в символе C символом?
ответ
рекурсии является вашим другом:
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;
}
Приятный, но логический' && 'считается ветвлением, не так ли? –
Ну, ваш вопрос
Как напечатать строку в C посимвольно?
Использование printf и без использования циклов или разветвлений?
Самый простой ответ на это
#include<stdio.h>
int main()
{
char a[]="blablabla";
printf("%s",a);
return 0;
}
Это ответ на ваш вопрос. Если это не то, что вы хотели, то Укажите свой точный вопрос, указав более подробную информацию.
Это не характер. Он печатает строку за один раз. –
@PaulOgilvie, то что вы подразумеваете под символом «character by character» –
@ arun-as, это означает, что программа pogrammer печатает один символ, затем, например, увеличивает указатель строки, затем программы печатают другой символ и т. Д. Например используя printf ("% c", * p); См. Другие примеры. –
Расширение ответ @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;
}
C не имеет нативного типа bool, который будет равен нулю или 1. Следовательно, i будет равным нулю или больше нуля и вызывать ошибку, если не 1 при выборе функции. Он будет работать с массивом из 255 записей: в ноте ввода есть манекен, у всех остальных - print_char_by_char. (Вы можете сделать этот массив глобальным.) –
@PaulOgilvie, http://stackoverflow.com/a/1608350/1606345 –
Это означает, что это работает только на C99, а не в старых версиях бензопилы C (где программист должен делать все сам) и в тех старых версиях с макросами макрос будет делать (x? 1: 0), который является ветвью и поэтому нарушает назначение (а встроенный тип B99 bool заставляет компилятор сгенерировать эту ветвь, следовательно, также нарушение назначение). –
@ qwe2004, скажите вашему профессору, что сообщество Stack Overflow соглашается, что не может быть сделано. Если он скажет, что это можно сделать, мы все заинтересованы в том, чтобы увидеть его умный и хитрый способ сделать это и учиться. (Скажите ему, что мы будем критиковать скрытые ветвящиеся и логические тесты.)
Это можно сделать без логических операторов, взгляните на мой ответ. –
- 1. Как вы печатаете строку на принтере в C#?
- 2. python: Как вы печатаете на новую строку
- 3. Как вы печатаете адрес объекта в C++?
- 4. Как вы печатаете массивы двойных в C?
- 5. C# подстрока() останавливает строку в & символе
- 6. Как вы печатаете JTextField?
- 7. Как вы печатаете строку, в которой есть слова, введенные пользователем?
- 8. Как вы печатаете C++ 11 time_point?
- 9. Как вы печатаете std :: regex?
- 10. Как вы печатаете строку точно так, как она есть?
- 11. Как вы печатаете строку в MATLAB в цвете?
- 12. Как вы печатаете шестнадцатеричные цифры в строку Perl?
- 13. Как вы печатаете содержимое RichTextBox?
- 14. Как вы печатаете файлы XPS?
- 15. Как вы печатаете имена экземпляров?
- 16. как вы печатаете значения одни
- 17. Как вы печатаете атрибут подкласса?
- 18. C++ Разделите строку символом?
- 19. В C++, как вы печатаете несколько строк текста на консоли?
- 20. Как вы печатаете полный массив значений в C++
- 21. Как вы печатаете пустые строки в python?
- 22. Как вы печатаете черный ящик в Java?
- 23. Как вы хорошо печатаете в LEDA
- 24. Как вы печатаете двойную кавычку в JSP?
- 25. Как вы печатаете в WPF (VB)
- 26. Как вы печатаете смайлик в сборке?
- 27. Как вы печатаете знак доллара $ в Дарте
- 28. Как вы печатаете определенное число в массиве?
- 29. Как вы печатаете массив строк в MIPS?
- 30. Как вы печатаете на stderr в R?
что вы подразумеваете под символом? и как это отличается от использования 'printf ("% s ", var);'? – rcs
Что значит персонаж по характеру? И почему вы не хотите использовать цикл? – philant
'char * str =" bla "; printf ("% c% c% c \ n", str [0], str [1], str [2]); ' –