gpt4 book ai didi

.txt 的内容看起来很乱,其内容是使用 C 编写的

转载 作者:行者123 更新时间:2023-11-30 14:45:40 24 4
gpt4 key购买 nike

出于学习目的,我正在名为“record.txt”的文件中写入学生记录我真的没有看到我的代码有任何问题(在我看来)。

这是我尝试过的代码:

# include<stdio.h>
# include<stdlib.h>

int main() {
FILE *fp;
char choice = 'y';

struct student {
char name[50];
int rollno;
float percentage;
};
struct student s;


fp = fopen("record.txt", "w");
if(fp == NULL) {
puts("Unable to open the file");
exit(0);
}

while(choice == 'y') {

printf("Enter name, rollno and percentage of student: ");
scanf("%s %d %f", &s.name, &s.rollno, &s.percentage);

fwrite(&s, sizeof(s), 1, fp);

printf("Want to enter another record(y/n): ");

fflush(stdin);
choice = getchar();

}
fclose(fp);

}

输出:

Enter name, rollno and percentage of student: jon
15
87.2
Want to enter another record(y/n): n

--------------------------------
Process exited after 6.154 seconds with return value 0
Press any key to continue . . .

“record.txt”文件的内容:

jon            ÿÿÿÿÿÿÿÿL              ù$@     L      ff®B

所以,我真正想知道的是名称是按应有的方式编写的,但其他值(如 rollno 和百分比)看起来难以理解。为什么会这样?

PS 请随意编辑问题标题,因为我没有找到任何合适的标题。

最佳答案

这是固定代码:

# include<stdio.h>
# include<stdlib.h>

int main() {
FILE *fp;
char choice = 'y';

struct student {
char name[50];
int rollno;
float percentage;
};
struct student s;


fp = fopen("record.txt", "w");
if (fp == NULL) {
puts("Unable to open the file");
exit(0);
}

while (choice == 'y') {

printf("Enter name, rollno and percentage of student: ");
scanf("%50s %d %f", &s.name, &s.rollno, &s.percentage);

fprintf(fp, "%s, %d, %f\n", s.name, s.rollno, s.percentage); // !changed

printf("Want to enter another record(y/n): ");

fflush(stdin);
choice = getchar();

}
fclose(fp);

}

尤其是那条线fwrite(&s, sizeof(s), 1, fp); 需要更改。

  • 使用fprintf()写入人类可读的数据
  • 你也不需要写入结构的位模式,但访问每个字段结构体。

-> fprintf(fp, "%s, %d, %f\n", s.name, s.rollno, s.percentage);

还有另一件小事,如果您使用 scanf("%50s %d %f", &s.name, &s.rollno, &s.percentage); 您会限制读取的大小 name 最多 50 个字符,防止缓冲区溢出。

关于.txt 的内容看起来很乱,其内容是使用 C 编写的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52878194/

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