目前程序正在读取“无法打开输入文件”,这意味着大小为 0。我用编辑器创建了输入文件,但我不确定问题是什么。我的代码有什么问题可能会导致这种情况吗?或者更有可能我只是搞乱了 input.txt 文件?
#include <stdio.h>
#include <stdlib.h>
int load_data(char* filename, int *x, float *y)
{
int i=0;
FILE* file=fopen(filename,"r");
if(file==NULL)
{
return 0;
}
int size;
fscanf(file, "%d", &size);
for(i=0;i<size;i++)
{
fscanf(file, "%d%f", &x, &y);
}
fclose(file);
return size;
}
void print_data(int *acn, float *amt, int size)
{
int i;
int *p;
for(i=0;i<size;i++)
{
printf("%-10d%-10f ", *(acn+i), *(amt+i));
}
}
int main(int argc, char** argv)
{
int size=0, *x;
char *filename;
float *y;
if(argc!=3)
{
printf("\nInsufficient arguments.\n");
return 0;
}
int n=atoi(argv[2]);
int *acn;
float *amt;
int *fp=malloc(sizeof(int)*n);
if(size==0)
{
printf("\nUnable to open the input file.\n");
return 0;
}
load_data(filename, x, y);
print_data(acn, amt, size);
free(fp);
return 0;
}
最佳答案
您的程序中有很多问题 -
- 您是来自公共(public)线路的文件名,但您没有将其存储在
char *filename;
中并在功能中int load_data(char* filename, int *x, float *y)
你正在路过filename
.但是filename
没有name of file
存储在其中。 fscanf(file, "%d%f", &x, &y);
当您在fscanf
中传递指针时与%d
你不需要&
运算符(operator)。这样就可以了-fscanf(file, "%d%f", x, y);
您需要使用 malloc 分配内存到
x
和y
.size
当您在函数和main
中再次声明它时,这两个函数中的内容是不同的.这就是为什么size
总是0
在int main
.void print_data
在此函数中,您正在打印acn
的值和amt
但两个指针都未初始化,并且您正在打印它,因此它将给出未定义的行为。此外,您还有在程序中声明但未使用的指针。
关于命令行参数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31644518/