fscanf_s(fp, "%d %d", width, height,20);
时间: 2023-08-27 14:03:52 浏览: 73
在使用 fscanf_s() 函数时,第三个参数应该是要读取的变量的大小,而不是缓冲区的大小。因此,如果要读取的变量是一个整数,第三个参数应该是 sizeof(int)。如果要读取的变量是一个字符数组,第三个参数应该是缓冲区的大小。
例如,以下代码从文件中读取两个整数,并将它们存储在 width 和 height 变量中:
```c
#include <stdio.h>
int main() {
int width, height;
FILE *fp;
fopen_s(&fp, "input.txt", "r");
fscanf_s(fp, "%d %d", &width, &height, sizeof(int), sizeof(int));
fclose(fp);
printf("Width: %d\nHeight: %d\n", width, height);
return 0;
}
```
在上述代码中,我们使用 fscanf_s() 函数从文件中读取两个整数,并将它们存储在 width 和 height 变量中。由于要读取的变量是整数,因此第三个参数应该是 sizeof(int)。需要注意的是,第四个参数可以省略,因为它的默认值是要读取的变量的大小。
如果要读取的变量是一个字符数组,例如以下代码:
```c
#include <stdio.h>
int main() {
char buffer[100];
FILE *fp;
fopen_s(&fp, "input.txt", "r");
fscanf_s(fp, "%s", buffer, sizeof(buffer));
fclose(fp);
printf("Read string: %s\n", buffer);
return 0;
}
```
在上述代码中,我们使用 fscanf_s() 函数从文件中读取一个字符串,并将它存储在 buffer 数组中。由于 buffer 数组的大小为 100,因此第三个参数应该是 sizeof(buffer),以确保读取的数据不会超出缓冲区的范围。
阅读全文