我有这个功能但是,在我插入主要功能后,用户可以在程序启动时输入文件名(因为有更多文件可用),如果存在则打开,否则不会?
void readFromFile(struct varor reg[], int *nrOfGoods){
FILE * fp;
fp = fopen("list.txt","r");
if(fp!=NULL){
char namn[WORDLENGTH];
int varunummer, lagersaldo, i;
fscanf(fp,"%d", nrOfGoods);//I have the quantity in the beggining of the file
for(i=0;i<(*nrOfGoods);i++){
fscanf(fp,"%d", ®[i].varunummer);
fscanf(fp,"%s", reg[i].namn);
fscanf(fp,"%d", ®[i].lagersaldo);
}
fclose(fp);
} else printf("Could not open file.");
}
答案 0 :(得分:1)
尝试这样的事情,您可以创建在用户输入时存储文件名的字符串,并使用文件名,如下文所示。
char filename[20];
printf("Enter the name of the file\n");
gets(filename);
infile=fopen(filename,"r");
if (infile == NULL)
{
printf("Could not open file %s",filename);
}
else
{
do something
}
答案 1 :(得分:0)
从您的代码中,修复起来似乎很简单,如果你想要做的是打开&#34; list.txt&#34;以外的文件。请记住,在fopen的函数定义中,看起来像这样:
FILE *fopen(const char *filename, const char *mode)
found here。
您打开的文件名为const
。与它似乎暗示的相反,它并不意味着你只能使用字符串文字,只是在函数运行期间不会修改或销毁变量;它向您保证您的文件名变量将保持不变。
因此,由于它不需要文字,因此您可以将变量作为第一个(和第二个)参数传递。只需让用户输入一个表示文件路径的字符串,然后将其传递给您的方法。