gpt4 book ai didi

c - 我在使用 fopen 时遇到错误

转载 作者:行者123 更新时间:2023-11-30 21:18:26 24 4
gpt4 key购买 nike

当我去编译我的实验室时,我收到了这个错误。如果有人能告诉我我做错了什么那就太好了,因为现在我陷入了困境。错误似乎出在我的 fopen 语句上,但我们的老师并没有真正教我们它,只是告诉我们使用它。提前非常感谢

lab1.c: In function ‘read_file’:
lab1.c:65: warning: passing argument 1 of ‘fopen’ from incompatible pointer type
/usr/include/stdio.h:271: note: expected ‘const char * __restrict__’ but argument is of
type 'struct FILE *'

这是我的代码:

//Libraries
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAX_NAME_LENGTH 20
#define MAX_ARRAY_LENGTH 25

//Structure
typedef struct student_{
char name[MAX_NAME_LENGTH];
int num_A;
int num_B;
int num_C;
int num_D;
int num_F;
float gpa;
}student;

student class[MAX_ARRAY_LENGTH];

//Prototypes
int read_file(FILE *input);
void print_grade_distribution(int num_students);
void calculate_gpa(int *index);
void write_to_file(FILE *output, int num_students);

int main(int argc, char* argv[]){

if(argc != 2)
{
printf("Insufficient arguments");
exit(EXIT_FAILURE);
}

if(argv[1] == NULL)
{
printf("Failed to print.");
exit(EXIT_FAILURE);
}

FILE *infile;
FILE *outfile;
int num_students = read_file(infile);
print_grade_distribution(num_students);

write_to_file(outfile, num_students);


}


int read_file(FILE* input){

int i;
FILE *infile;
input = fopen(infile, "r");

if(input == NULL)
{
printf("File Failed to Open.");
exit(EXIT_FAILURE);
}

int num_students;
fscanf(input, "%d", &num_students);

for(i = 0; i < num_students; i++){
fscanf(input, "%c %d %d %d %d", &class[i].name, &class[i].num_A, &class[i].num_B, &class[i].num_C, &class[i].num_D, &class[i].num_F);
}

int *index;
calculate_gpa(index);

fclose(input);
return num_students;
}

void print_grade_distribution(int num_students){

int i;
int j;

printf("\nA:");
for (i = 0; i < num_students; i++){
for(j = 0; j < class[i].num_A; j++){
printf("-");
}}

printf("\nB:");
for(i = 0; i < num_students; i++){
for(j = 0; j < class[i].num_B; j++){
printf("-");
printf("\nC:");
for(i = 0; i < num_students; i++){
for(j = 0; j < class[i].num_C; j++){
printf("-");
}}

printf("\nD:");
for(i = 0; i < num_students; i++){
for(j = 0; j < class[i].num_D; j++){
printf("-");
}}

printf("\nF:");
for(i = 0; i < num_students; i++){
for(j = 0; j < class[i].num_F; j++){
printf("-");
}}
}

void calculate_gpa(int *index){

int i;
int gpa;
int As, Bs, Cs, Ds, Fs;
int index1 = *index;
for(i = 0; i < index1; i++){

if (class[i].num_A != 0){
gpa = class[i].num_A * 4;
As = class[i].num_A;
}
if (class[i].num_B != 0){
gpa = gpa + (class[i].num_B *3);
Bs = class[i].num_B;
}
if (class[i].num_C != 0){
gpa = gpa + (class[i].num_C *2);
Cs = class[i].num_C;
}
if (class[i].num_D != 0){
gpa = gpa + (class[i].num_D *1);
Ds = class[i].num_D;
}
if (class[i].num_F != 0){
gpa = gpa + (class[i].num_F * 0);
Fs = class[i].num_F;
}

gpa = gpa / (As + Bs + Cs + Ds + Fs);

gpa = class[i].gpa;
}


}

void write_to_file(FILE *output, int num_students){

int i;
for( i = 0; i <= num_students; i++)
fprintf(output, "%c %d\n", &class[i].name, &class[i].gpa);
fclose(output);
}

最佳答案

infile 应该是一个 char*,其中包含带有文件位置的字符串。不是 FILE*

请参阅 fopen 的文档.

关于c - 我在使用 fopen 时遇到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23995638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com