52

When printing a single character in a C program, must I use "%1s" in the format string? Can I use something like "%c"?

Quinn Taylor
  • 44,553
  • 16
  • 113
  • 131
Aydya
  • 1,867
  • 3
  • 20
  • 22

5 Answers5

100

yes, %c will print a single char:

printf("%c", 'h');

also, putchar/putc will work too. From "man putchar":

#include <stdio.h>

int fputc(int c, FILE *stream);
int putc(int c, FILE *stream);
int putchar(int c);

* fputc() writes the character c, cast to an unsigned char, to stream.
* putc() is equivalent to fputc() except that it may be implemented as a macro which evaluates stream more than once.
* putchar(c); is equivalent to putc(c,stdout).

EDIT:

Also note, that if you have a string, to output a single char, you need get the character in the string that you want to output. For example:

const char *h = "hello world";
printf("%c\n", h[4]); /* outputs an 'o' character */
Evan Teran
  • 87,561
  • 32
  • 179
  • 238
22

Be careful of difference between 'c' and "c"

'c' is a char suitable for formatting with %c

"c" is a char* pointing to a memory block with a length of 2 (with the null terminator).

Douglas Leeder
  • 52,368
  • 9
  • 94
  • 137
  • 4
    Technically, "c" is a char* with a length of 4 (or whatever your pointer size is) that points to a block of memory with 2 characters in it ('c' and '\0'). But that's just being pedantic. – paxdiablo Nov 22 '08 at 02:01
17

As mentioned in one of the other answers, you can use putc(int c, FILE *stream), putchar(int c) or fputc(int c, FILE *stream) for this purpose.

What's important to note is that using any of the above functions is from some to signicantly faster than using any of the format-parsing functions like printf.

Using printf is like using a machine gun to fire one bullet.

Roalt
  • 8,330
  • 7
  • 41
  • 53
4

The easiest way to output a single character is to simply use the putchar function. After all, that's it's sole purpose and it cannot do anything else. It cannot be simpler than that.

klutt
  • 30,332
  • 17
  • 55
  • 95
3
char variable = 'x';  // the variable is a char whose value is lowercase x

printf("<%c>", variable); // print it with angle brackets around the character
EvilTeach
  • 28,120
  • 21
  • 85
  • 141