diff --git a/libc/printf.cc b/libc/printf.cc
index 09be03a7894c914a93283184e0b7eafdf4dfe966..a94eb4614bdeabcf0dee16ebf17644a11fcb4477 100644
--- a/libc/printf.cc
+++ b/libc/printf.cc
@@ -322,3 +322,14 @@ int vsnprintf(char *str, size_t size, const char *format, va_list ap)
     *last = '\0';
     return out.length();
 }
+
+int sprintf(char* str, const char* format, ...)
+{
+    va_list ap;
+
+    va_start(ap, format);
+    auto out = strprintf(format, ap);
+    va_end(ap);
+    std::copy(out.begin(), out.end(), str);
+    return out.length();
+}