我读过这个,我只知道缓冲区是 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");
工作?
实际上,后一种方式也可以。然而,在许多情况下,您需要在运行时形成文件名,这意味着您必须使用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")