为什么我们应该在将缓冲区发送到函数之前使用它

时间:2013-10-09 02:28:50

标签: c function buffer

我已经读过这篇文章了,我只知道缓冲区是RAM中未指定的数据长度

    char buf[100];
    snprintf(buf, sizeof(buf), "%s.txt", "abc");
    FILE *f = fopen(buf, "r");

它是如何工作的? 我们为什么要在函数中使用缓冲区作为参数? 为什么不

    char buf[100] = "abc.txt";
    FILE *f = fopen(buf, "r");

工作?

1 个答案:

答案 0 :(得分:1)

实际上,后一种方式也可以。但是在许多情况下,您需要在运行时形成文件名,这意味着您必须使用snprintf()(您使用sprintf(),是吗?)来构建文件名。例如,这可能如下所示:

int user_id = get_user_id();
char fname[PATH_MAX];
/* for each user data is in a file <user_id>.txt */
snprintf(fname, sizeof(fname), "%d.txt", user_id);
fp = fopen(fname, "r");

在你的(非常简单的情况)中,你可以做得更简单:

fp = fopen("abc.txt", "r")