在c中从fread()读取缓冲区数据
Reading buffer data form fread() in c
我正在尝试从文件中提取数据并将其直接存储在 fread 函数的数组中。但是,数据类型似乎不正确?
错误信息如下:
dataPlus.c:28:15: error: incompatible integer to pointer conversion
passing
'int' to parameter of type 'void *' [-Werror,-Wint-conversion]
fread(ptr[i], 1, 1, in);
如何使这些数据可访问?例如,如果我想检查文本文件中的前 3 个字符是否为 1、2 和 3。
/**
* To store specific lines of data from fread into array.
* Alternatively, to make the buffer recieved from fread, readible
**/
#include <stdio.h>
int main(void)
{
FILE* in = fopen("in.txt", "r");
if (in == NULL)
{
printf("File does not exist.\n");
return 1;
}
FILE* out = fopen("out.txt", "w");
//read file information into array.
int ptr[4];
//error here... Tried to store it directly into array instead of buffer..
for(int i = 0; i < 4; i++)
{
fread(ptr[i], 1, 1, in);
}
for(int j = 0; j < 4; j++)
{
printf("success. Array[%i] is --> %i value\n", j, ptr[j]);
}
fclose(in);
fclose(out);
}
在 C 中,指针和数组完全相同,因此 int ptr[4];
表示您有一个包含 4 个整数的数组,您可以使用通常的表示法(例如 ptr[3] = 2;
)访问它们,或者,使用指针算法,*(ptr+3) = 2;
,做同样的事情。
函数fread()
需要某种指针,所以你必须给它一个地址,在你的例子中是(operator &
)中的i:th元素的地址数组,例如 fread(&(ptr[i]), 1, 1, in);
或 fread(ptr + i, 1, 1, in);
编译器错误就是这样说的,你给函数一个整数而不是一个指针。
int ptr[4];是一个 intrigers 数组,所以 ptr[i] 是一个 intrigers.
如果你需要一个指针数组,就是这样
int *(ptr)[4] 所以 ptr[i] 是一个指针。
我正在尝试从文件中提取数据并将其直接存储在 fread 函数的数组中。但是,数据类型似乎不正确?
错误信息如下:
dataPlus.c:28:15: error: incompatible integer to pointer conversion passing 'int' to parameter of type 'void *' [-Werror,-Wint-conversion] fread(ptr[i], 1, 1, in);
如何使这些数据可访问?例如,如果我想检查文本文件中的前 3 个字符是否为 1、2 和 3。
/**
* To store specific lines of data from fread into array.
* Alternatively, to make the buffer recieved from fread, readible
**/
#include <stdio.h>
int main(void)
{
FILE* in = fopen("in.txt", "r");
if (in == NULL)
{
printf("File does not exist.\n");
return 1;
}
FILE* out = fopen("out.txt", "w");
//read file information into array.
int ptr[4];
//error here... Tried to store it directly into array instead of buffer..
for(int i = 0; i < 4; i++)
{
fread(ptr[i], 1, 1, in);
}
for(int j = 0; j < 4; j++)
{
printf("success. Array[%i] is --> %i value\n", j, ptr[j]);
}
fclose(in);
fclose(out);
}
在 C 中,指针和数组完全相同,因此 int ptr[4];
表示您有一个包含 4 个整数的数组,您可以使用通常的表示法(例如 ptr[3] = 2;
)访问它们,或者,使用指针算法,*(ptr+3) = 2;
,做同样的事情。
函数fread()
需要某种指针,所以你必须给它一个地址,在你的例子中是(operator &
)中的i:th元素的地址数组,例如 fread(&(ptr[i]), 1, 1, in);
或 fread(ptr + i, 1, 1, in);
编译器错误就是这样说的,你给函数一个整数而不是一个指针。
int ptr[4];是一个 intrigers 数组,所以 ptr[i] 是一个 intrigers.
如果你需要一个指针数组,就是这样
int *(ptr)[4] 所以 ptr[i] 是一个指针。