这是原来的问题:
您将在C中编写一个程序,从a读取二进制数据 文件。文件中的第一个值是一个整数,表示浮点数 文件中剩余的值。其余数据是实际浮点值。您的 程序必须执行以下操作:
程序的输出($。/ a.out data1或$ binread data1)应该给出
4.400000 3.300000 2.200000 1.100000
我一直在尝试执行此任务,但我无法打开提供的数据文件:
如果我试图打开它们,我就无法打开,或者我得到一个0的无限循环
任何帮助将不胜感激!提前谢谢
以下是我的代码:
#include <stdio.h>
#include <malloc.h>
int main(int argc, char *argv[]){
int i;
if(argc < 2){
printf("invalid arguments\n");
}
else{
FILE *fp = fopen(argv[1], "rb");
if(fp != NULL){
int n;
fscanf(fp, "%d", &n);
float *arr = (float *)malloc(n * sizeof(float));
for(i = 0; i < n; ++i){
fscanf(fp, " ,%f", arr + i);
}
for(i = n - 1; i >= 0; --i){
printf("%f\n", arr[i]);
}
}
else{
printf("Can not open %s\n", argv[1]);
}
}
}
答案 0 :(得分:0)
根据您提供的描述,该文件包含浮点值,而不包含任何其他内容。您似乎假设有额外的逗号...如果值只是用空格分隔,请使用此if (fscanf(fp, "%f", arr + i) == 1) {
/* float value was parsed */
} else {
/* could not parse a float:
* either unexpected end of file or invalid input
*/
}
格式:
pymysql.err.OperationalError: (2006, "MySQL server has gone away..
答案 1 :(得分:0)
您将在C中编写一个程序,从文件中读取二进制数据。该 文件中的第一个值是一个表示数字的整数 文件中剩余的浮点值。剩下的数据是 实际浮点值。
由于您要编写一个读取二进制数据的程序,因此您无法使用fscanf()
,这是 text < / strong>数据。要读取第一个整数并读取浮点值并存储它们,您可以使用fread()
。变化:
13c13
< fscanf(fp, "%d", &n);
---
> fread(&n, sizeof n, 1, fp);
15,17c15
< for(i = 0; i < n; ++i){
< fscanf(fp, " ,%f", arr + i);
< }
---
> n = fread(arr, sizeof *arr, n, fp);