Как вы избегаете знака% при использовании printf в C?
printf("hello\%"); /* not like this */
Как вы избегаете знака% при использовании printf в C?
printf("hello\%"); /* not like this */
Вы можете избежать этого, разместив двойной "%" следующим образом: %%
Используя ваш пример:
printf("hello%%");
Вывод "%" только для printf. Если вы выполните:
char a[5];
strcpy(a, "%%");
printf("This is a value: %s\n", a);
Он напечатает: This is a value: %%
Как говорили другие, %% выйдет из%.
Обратите внимание, что вы никогда не должны этого делать:
char c[100];
char *c2;
...
printf(c); /* OR */
printf(c2);
Всякий раз, когда вы должны печатать строку, всегда, всегда, всегда печатайте ее с помощью
printf("%s", c)
чтобы предотвратить возникновение проблем с встроенным% [нарушениями памяти, segfault и т.д.]
Если в строке нет форматов, вы можете использовать puts (или fputs):
puts("hello%");
если в строке есть формат:
printf("%.2f%%", 53.2);
Как отмечено в комментариях, puts добавляет \n к выходу, а fputs - нет.
С собой...
printf("hello%%"); /* like this */
используйте двойной %%
придираться: 
Вы действительно не избегаете % в строке, которая определяет формат семейства функций printf() (и scanf()).
 % в семействе функций printf() (и scanf()) начинает спецификацию преобразования. В одном из правил спецификации преобразования указано, что % как спецификатор преобразования (сразу после %, который начал спецификацию преобразования) вызывает запись символа '%' без преобразования аргументов.
Строка  действительно содержит 2 '%' символов внутри (в отличие от экранирующих символов: "a\bc" - строка с 3 непустыми символами; "a%%b" - строка с 4 непустыми символами).
Вот так:
printf("hello%%");
//-----------^^ inside printf, use two percent signs together
Обратная косая черта в C используется для удаления символов в строках. Строки не будут распознавать% как особый символ, и поэтому никакого выхода не потребуется. Printf - другое дело: используйте %% для печати одного%.
Yup, используйте printf ( "hello %%" ); и это было сделано.
вы используете неправильный формат, вы должны использовать %% для печати %. Ваш код должен быть:
printf("hello%%");  
Подробнее все спецификаторы формата, используемые в C.
Вы можете просто использовать % дважды, то есть "%%"
Пример:
printf("You gave me 12.3 %% of profit");
Вы можете использовать %%:
printf("100%%");
Результат:
100%
Двойной "%" работает также в ".Format(...).
Пример (с iDrawApertureMask == 87, fCornerRadMask == 0.05):
csCurrentLine.Format("\%ADD%2d%C,%6.4f*\%",iDrawApertureMask,fCornerRadMask) ;
дает желаемое и ожидаемое значение (содержимое строки в) csCurrentLine;    "% ADD87C, 0.0500 *%" 
Используйте это:
#include <stdio.h>
printf("hello%s%s");
Полный список спецификаторов формата, используемых с printf, можно найти здесь: