sprintf Function

Raindrops
Raindrops in C

sprintf Function

raindrops.h

#ifndef RAINDROPS_H
#define RAINDROPS_H

void convert(char result[], int drops);

#endif

raindrops.c

#include "raindrops.h"

#include <stdio.h>
#include <string.h>

void convert(char result[], int drops)
{
   sprintf(result, "%s%s%s", drops % 3 == 0 ? "Pling" : "",
           drops % 5 == 0 ? "Plang" : "", drops % 7 == 0 ? "Plong" : "");

   if (strlen(result) == 0)
      sprintf(result, "%d", drops);
}

This approach allows for very concise, if not a bit obfuscated, code.

A series of ternary conditional operators check if drops is a multiple of 3, 5, or 7 respectively. If it is, the expression returns the appropriate raindrop sound (either "Pling", "Plang" or "Plong"); otherwise, the result is the empty string ("").

Then, in the same statement, a single call to the sprintf function concatenates all the above three strings.

Finally, the strlen function checks if result is empty: if so, sprintf is used again to format drops as string into result.

17th Jul 2024 · Found it useful?