2016-01-15
*post*
================================================================================
Multiple lines string in C
================================================================================
In this quick tutorial, I will show you how to write multiple line string (multiline string) in C programming language.
There are two ways of splitting char *
variable in mupltiple lines.
// 👇 first approach
char *str1 = "line 1\n \
line 2";
// 👇 second approach
char *str2 = "line 1\n"
"line 2";
I like the second one.
It can be useful for printing multple lines in C. Let’s take a look redis source code as an example. Instead of printing multiple lines string like this
/* taken from: https://github.com/antirez/redis/blob/3.2/src/server.c#L3651-L3666 */
void usage(void) {
fprintf(stderr,"Usage: ./redis-server [/path/to/redis.conf] [options]\n");
fprintf(stderr," ./redis-server - (read config from stdin)\n");
fprintf(stderr," ./redis-server -v or --version\n");
fprintf(stderr," ./redis-server -h or --help\n");
fprintf(stderr," ./redis-server --test-memory <megabytes>\n\n");
fprintf(stderr,"Examples:\n");
fprintf(stderr," ./redis-server (run the server with default conf)\n");
fprintf(stderr," ./redis-server /etc/redis/6379.conf\n");
fprintf(stderr," ./redis-server --port 7777\n");
fprintf(stderr," ./redis-server --port 7777 --slaveof 127.0.0.1 8888\n");
fprintf(stderr," ./redis-server /etc/myredis.conf --loglevel verbose\n\n");
fprintf(stderr,"Sentinel mode:\n");
fprintf(stderr," ./redis-server /etc/sentinel.conf --sentinel\n");
exit(1);
}
I like to write the code like this one
/* Alternative version of https://github.com/antirez/redis/blob/3.2/src/server.c#L3651-L3666 */
void usage(void) {
fprintf(stderr,
"Usage: ./redis-server [/path/to/redis.conf] [options]\n"
" ./redis-server - (read config from stdin)\n"
" ./redis-server -v or --version\n"
" ./redis-server -h or --help\n"
" ./redis-server --test-memory <megabytes>\n\n"
"Examples:\n"
" ./redis-server (run the server with default conf)\n"
" ./redis-server /etc/redis/6379.conf\n"
" ./redis-server --port 7777\n"
" ./redis-server --port 7777 --slaveof 127.0.0.1 8888\n"
" ./redis-server /etc/myredis.conf --loglevel verbose\n\n"
"Sentinel mode:\n"
" ./redis-server /etc/sentinel.conf --sentinel\n");
exit(1);
}
less typing FTW.
================================================================================
TAGS
*post-tags*
- [1]