我需要获取字符串的大小以传递给函数 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;
}
fread(string, 1, n, fptr);
,其中 1
是 char
的字节大小(保证 为 1),n
是字符数组的分配大小。然而,fread
读取原始二进制文件并且不知道诸如空终止之类的事情。它准确读取 1 * n
字节。因此,除非文本文件中的字符串具有固定大小且以零填充,否则它是不合适的......这可能不是这里的情况(?)。fgets
可能更合适,因为它在行尾停止读取 '\n'
,所以如果您有一个包含可变长度字符串的文本文件,每个字符串都写在自己的一行上,那么 fgets
就是这样去吧。fread
返回0,fgets
返回空指针。string
分配任何内存,因此您无法在其中存储任何内容。 sizeof
不能用于指针,只能用于分配固定大小的数组。