提问人:ben 提问时间:10/9/2023 最后编辑:ben 更新时间:10/9/2023 访问量:69
是否可以获取函数 fread() 的字符串大小
Is it possible to get the size of a string for the function fread()
问:
我需要获取字符串的大小以传递给函数 read() 下面是我尝试实现的代码,使用函数 size 查找字符串的大小,但它不起作用
#include <stdlib.h>
int main()
{
int num;
char *string;
FILE *fptr;
// use appropriate location if you are using MacOS or Linux
fptr = fopen("program4.txt","r");
if(fptr == NULL)
{
printf("Error!");
exit(1);
}
fread(string, /*issuse */sizeof(string), 1, fptr);
printf("%s\n", string);
fclose(fptr);
return 0;
}
答:
2赞
Lundin
10/9/2023
#1
- 正确的用法应该是 where 是 a 的大小(以字节为单位)(保证为 1)和字符数组的分配大小。但是,读取原始二进制文件,并且不知道诸如 null 终止之类的事情。它精确读取字节。因此,除非文本文件中的字符串具有固定大小且零填充,否则它不合适......这里可能不是这种情况(?
fread(string, 1, n, fptr);
1
char
n
fread
1 * n
fgets
可能更合适,因为它在行尾停止读取,所以如果你有一个文本文件,其中包含可变长度的字符串,每个字符串都写在自己的一行上,那么就是要走的路。'\n'
fgets
- 无论您使用哪种功能,请务必检查结果是否有错误。 读取失败时返回 0,返回 null 指针。
fread
fgets
- 您从未为其分配过任何内存,因此您无法在其中存储任何内容。 不能用于指针,只能用于以固定大小分配的数组。
string
sizeof
- 提前将字符串分配到某个允许的最大大小可能是合理的。例如,80 个字符 + 1 个空终止符,或任何对您的文件格式有意义的内容。
评论
fread
fgets
fscanf
getline()