Это то, что вы собираетесь сделать:
#include <stdio.h>
int main()
{
char c = 'a';
printf("%c",c); /* <<<< use %c instead of %s, read printf(3) */
return 0;
}
Если вы делаете:
#include <stdio.h>
int main()
{
char c[2];
c[0] = 'a';
c[1] = 'a'; //skipping '\0'
printf("%s",c); //aa..(then some random output)
return 0;
}
на этот раз вы передаете printf()
указатель (только имя массива c
интерпретируется как адрес первого элемента, поэтому его можно передать в printf()
с помощью спецификатора формата %s
. На этот раз отсутствие \0
заставляет printf()
продолжать печатать, пока не получит \0
, вы можете изменить свой код на:
#include <stdio.h>
int main()
{
char c[2];
c[0] = 'a';
c[1] = '\0';
printf("%s",c); // you get only a
return 0;
}
и вы получите a
в виде распечатки.