22 KiB
title | TARGET DECK | FILE TAGS | tags | |
---|---|---|---|---|
Strings | Obsidian::STEM | c17 |
|
Overview
A contiguous sequence of characters terminated by the NUL
character (refer to ascii). Text data is said to be more platform-independent than endianness data since it is unaffected by word size or byte ordering.
%%ANKI
Basic
What is a C-style string?
Back: A character array terminated with a NUL
character.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What character terminates all C-style strings?
Back: NUL
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What is the decimal value of NUL
in ASCII encoding?
Back: 0
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI Basic Text is more platform-independent than binary because it is unaffected by what two properties? Back: Word size and byte ordering. Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
printf
The syntax for the format placeholder is %[flags][width][.precision][length]specifier
.
%%ANKI
Basic
Which header file contains printf
functionality?
Back: stdio.h
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Cloze
{1:width
} field specifies a {2:minimum} number of characters while {2:precision
} specifies a {1:maximum}.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Cloze
The {width
and precision
} fields are output related whereas the {length
} field is input related.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
Flag | Description |
---|---|
- |
Left-aligns the output |
+ |
Prepends a plus for positive signed-numeric types |
␣ |
Prepends a space for positive signed-numeric types |
0 |
Prepends zeros for numeric types |
%%ANKI
Cloze
The {-
} flag {left-aligns the output}.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Basic
What is the output of printf("%-2d abc", 100)
?
Back: 100 abc
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Basic
What is the output of printf("%-4d abc", 100)
?
Back: 100 abc
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Basic
What is the output of printf("%.4d abc", 100)
?
Back: 0100 abc
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Basic
What is the output of printf("%04d abc", 100)
?
Back: 0100 abc
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Basic
What is the output of printf("%.4s abc", "efg")
?
Back: efg abc
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Basic
What is the output of printf("%.2s abc", "efg")
?
Back: ef abc
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Basic
What is the output of printf("%.2f abc", 0.01234)
?
Back: 0.01 abc
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Basic
How does the precision field affect "%s"
parameters?
Back: Strings are truncated if longer than the specified precision.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Basic
How does the precision field affect "%f"
parameters?
Back: Decimal values are truncated if longer than the specified precision.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Basic
What does a negative width field value indicate?
Back: This is actually a positive width with a -
(left-align) flag.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Basic
The -
printf
flag overrides what default behavior?
Back: Output is right-aligned by default.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Cloze
The {+
} printf
flag {prepends a plus for positive signed-numeric types}.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Basic
The +
printf
flag overrides what default behavior?
Back: Nothing is prepended to positive signed-numeric types by default.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Cloze
The {␣
} printf
flag {prepends a space for positive signed-numeric types}.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Basic
The ␣
printf
flag overrides what default behavior?
Back: Nothing is prepended to positive signed-numeric types by default.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Basic
How do the +
and ␣
printf
flags relate to one another?
Back: Both prepend a character to positive signed-numeric types.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Basic
What happens if both the +
and ␣
printf
flags are specified?
Back: The +
flag takes precedence.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Cloze
The {0
} printf
flag {prepends zeros for numeric types}.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Basic
What option must be specified for the 0
printf
flag to take effect?
Back: The "width" option.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Basic
The 0
printf
flag overrides what default behavior?
Back: Spaces are used to match the "width" option by default.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
Length | Description |
---|---|
hh |
int sized integer argument promoted from a char |
h |
int sized integer argument promoted from a short |
l |
long sized integer argument |
ll |
long long sized integer argument |
z |
size_t sized integer argument |
%%ANKI
Basic
Why do length modifiers for e.g. char
exist?
Back: For maximum portability in the face of default argument promotions.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Cloze
The {hh
} length corresponds to the {char
} type declaration.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Cloze
The {h
} length corresponds to the {short
} type declaration.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Cloze
The {l
} length corresponds to the {long
} type declaration.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Cloze
The {ll
} length corresponds to the {long long
} type declaration.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
%%ANKI
Cloze
The {z
} length corresponds to the {size_t
} type declaration.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
END%%
Specifier | Description |
---|---|
d , i |
a decimal signed int |
u |
a decimal unsigned int |
x |
a hexadecimal unsigned int (lowercase) |
X |
a hexadecimal unsigned int (uppercase) |
o |
an octal unsigned int |
s |
a NUL -terminated string |
c |
a char character |
p |
void* address in an implementation-defined format |
%%ANKI
Basic
What character do printf
format specifiers start with?
Back: %
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Basic
Why is printf
named the way it is?
Back: It stands for print formatted.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Cloze
The {%d
and %i
} format specifers work on a {decimal signed int
}.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Cloze
{%d
and %i
} are to signed
as {%u
} is to unsigned
.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Cloze
The {%u
} format specifier outputs a {decimal unsigned int
}.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Basic
What distinguishes format specifiers %d
and %i
?
Back: Nothing.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Basic
Which format specifiers were probably used to yield printf
output -12
?
Back: %d
or %i
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Basic
What distinguishes format specifiers %d
and %u
?
Back: The former is for signed integers, the latter unsigned.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Cloze
The {%x
} format specifier outputs a {lowercase hexadecimal unsigned int
}.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Basic
Which format specifier were probably used to yield printf
output 7af
?
Back: %x
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Cloze
The {%X
} format specifier outputs an {uppercase hexadecimal unsigned int
}.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Basic
Which format specifier were probably used to yield printf
output 7AF
?
Back: %X
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Basic
What distinguishes format specifiers %x
and %X
?
Back: The former outputs lowercase hex digits, the latter uppercase.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Cloze
The {%o
} format specifier outputs an {octal unsigned int
}.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Basic
Why doesn't the %o
format specifier have a corresponding %O
specifier?
Back: There is no distinction between lower and uppercase octal digits.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Cloze
The {%s
} format specifiers outputs a {NUL
-terminated string}.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Basic
Which format specifier was probably used to yield printf
output abc
?
Back: %s
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Cloze
The {%c
} format specifier outputs a {char
character}.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Basic
Which format specifier was probably used to yield printf
output a
?
Back: %c
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Cloze
The {%p
} format specifier outputs a {void*
address}.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Basic
Which format specifier was probably used to yield printf
output 0b80000000
?
Back: %p
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Basic
How is the address outputted by the %p
format specifier written?
Back: In an implementation-specific way.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Basic
Given int64_t x
, why is printf("%d", x)
a problem?
Back: %d
matches an int
which is not necessarily 64-bits.
Tags: printf
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
END%%
%%ANKI
Basic
What must you use when invoking printf
with a fixed-width integer type?
Back: printf
-specific macros.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
Tags: printf
END%%
%%ANKI
Basic
What is PRId32
an example macro for?
Back: A macro that expands to the correct specifier for a 32-bit signed integral type.
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
Tags: printf
END%%
%%ANKI
Cloze
{PRId32
} is to signed whereas {PRIu32
} is to unsigned.
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Basic
Which C header specifies printf
macros for fixed-width integral types?
Back: <inttypes.h>
Reference: “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.
Tags: printf
END%%
%%ANKI
Basic
Given int32_t x
, how might we invoke printf
on it?
Back: printf("%" PRId32, x)
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
Tags: printf
END%%
%%ANKI
Basic
What prefix do printf
macros from <inttypes.h>
share?
Back: PRI
Reference: Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
Tags: printf
END%%
References
- Bryant, Randal E., and David O'Hallaron. Computer Systems: A Programmer's Perspective. Third edition, Global edition. Always Learning. Pearson, 2016.
- “Printf,” in Wikipedia, January 18, 2024, https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962.