我需要得到一个字符串的大小传递给函数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;
}
1条答案
按热度按时间bsxbgnwa1#
fread(string, 1, n, fptr);
,其中1
是char
的字节大小(* 保证 * 为1),n
是字符数组的分配大小。但是,fread
读取原始二进制文件,并不知道空终止等情况。它读取1 * n
字节。因此,除非文本文件中的字符串是固定大小和零填充的,否则它是不合适的。这可能不是这里的情况(?).fgets
可能更合适,因为它在'\n'
行结束时停止阅读,所以如果您有一个文本文件,其中包含可变长度的字符串,每个字符串都写在自己的一行上,那么fgets
就是要走的路。fread
在读取不成功时返回0,fgets
返回空指针。string
分配任何内存,因此无法在其中存储任何内容。sizeof
不能用于指针,只能用于固定大小的数组。