现在每当我运行它时,它会打开一个“制作文件”标签,并向我显示错误something wrong with line 25 from that tab。不确定它是否通过它的方式。
另一个问题是,如果我将文件命名为“Anything”,它将显示为“A @@”
谢谢 (关闭文件只是为了测试它)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void generateFile(char,FILE);
void inputFile(int,FILE);
void printFile();
int main(int argc, char** argv) {
char fname;
int max_num;
srand(time(NULL));
printf("Enter file name \n");
scanf("%c", &fname);
printf("Enter max_num \n");
scanf("%d",&max_num);
FILE *fp;
generateFile(fname,*fp);
inputFile(max_num,*fp);
return 0;
}
void generateFile(char fname,FILE *fp){
fp = fopen( &fname, "w");
fprintf(fp,"Testing");
return;
}
void inputFile(int max_num, FILE *fp){
int i,array[25];
for(i=0;i<max_num;i++){
array[i] = rand() % 100 + 50;
fprintf(fp,"%d\n",array[i]);
fclose(fp);
}
}
答案 0 :(得分:0)
您错误地传递了fp
。您可以通过引用传递:
void generateFile(char *fname, FILE **fp)
*fp = fopen(fname, "w");
// Check for error....
fprintf(fp, "Testing");
return;
}
用法:generateFile(fname, &fp);
或者,我更喜欢,让函数返回一个指针:
FILE * void generateFile(char *fname) {
FILE *fp = fopen(fname, "w");
// Check for error....
fprintf(fp, "Testing");
return fp;
}
用法:FILE *fp = generateFile(fname);
名称应以char *
或const char *
传递。
此外,在下一个调用中,只需传递指针:
inputFile(max_num, fp);
并且,您还应该检查文件是否已成功打开。
并且,从fclose(fp);
循环移除for
,否则只有第一次写入会成功。