C中的sprintf和printf有什么区别?

What is the difference between sprintf and printf in C?

我正在研究 CS50 的 pset4,并且在 CS50.I 的 recover.c 问题中真的很困惑在哪里使用 sprintf 想知道在什么地方使用 sprintf 和 printf。

sprintf格式化一个字符串,写入第一个参数指定的字符数组(假设足够space); printf 格式化一个字符串并将其写入 stdout.

例如:您可以使用 sprintf:

char buffer[100];
sprintf(buffer, "My name is %s and I am %d years old", "John Doe", 25);
// buffer now contains "My name is John Doe and I am 25 years old"

但是,如果要将格式化字符串写入标准输出流,则需要使用printf(或fprintf,第一个参数为stdout):

printf("My name is %s and I am %d years old", "John Doe", 25);
// the text "My name is John Doe and I am 25 years old" gets printed to the stdout stream