f1name和f2name应的字符来存储文件名的数组。你已经将它们定义为字符,并试图在其中存储字符串将调用未定义的行为,因为scanf将执行非法内存访问。
另外,main函数的签名应该是以下任一项。
int main(void);
int main(int argc, char *argv[]);
你应该修改你的程序
#include
#include
int main(void) {
// variable name SSN change to lowercase
int ssn, n, i;
int retval; // to save the return value of fscanf
float wages, total;
char f1name[30+1], f2name[30+1];
// define file pointers inside main
// also change the name to lowercase
FILE *f1, *f2;
scanf("%30s", f1name);
f1 = fopen(f1name, "r");
// check for error in opening file
if(f1 == NULL) {
// print error message to stderr
perror("error in opening file\n");
// handle it
}
retval = fscanf(f1, "%d", &am