我收到此代码的错误。输出如下所示: enter image description here
为什么输出正常?
我希望输出为:
2 ppa 90 90 98 89 49 83.20 B
初中90 90 90 90 90 90.00 A
这是我的代码:
void class_result(){
system("cls");
fptr=fopen("stdnin.txt","r");
if(fptr==NULL)
{
printf("ERROR!!! FILE COULD NOT BE OPEN\n\n\n Go To Entry Menu to create File");
printf("\n\n\n Program is closing ....");
getch();
exit(0);
}
printf("\n\n\t\tALL STUDENTS RESULT \n\n");
printf("====================================================\n");
printf("R.No. Name P C M E CS %age Grade\n");
printf("====================================================\n");
// while(fscanf(fptr,"%d %s %d %d %d %d %d %.2f %c",&st.rollno,st.name,&st.p_marks,&st.c_marks,&st.m_marks,&st.e_marks,&st.cs_marks,&st.per,st.grade)!=EOF){
while(fread(&st,sizeof(st),1,fptr))
{
printf("%-6d %-10s %-3d %-3d %-3d %-3d %-3d %-3.2f %-2c\n",st.rollno,st.name,st.p_marks,st.c_marks,st.m_marks,st.e_marks,st.cs_marks,st.per,st.grade);
}
// while(fread(&st,sizeof(st),1,fptr))
// printf ("%d %s \n",st.rollno, st.name);
fclose(fptr);
getch();
}
答案 0 :(得分:0)
如果要以文本模式或二进制模式读取/写入文件,则必须下定决心。您无法以文本模式打开文件并以二进制模式写入,反之亦然。
要以二进制模式阅读,请将文件打开为二进制文件(使用" rb"而不是" r"),使用fread
和fwrite
。如果您的文件已包含文本数据,则必须删除该文件并从新文件开始。
fptr = fopen("stdnin.txt", "ab+");
fwrite(&st,sizeof(st),1,fptr);
fclose(fptr);
...
fptr = fopen("stdnin.txt", "rb");
while(fread(&st, sizeof(st), 1, fptr))
printf...;
要以文本模式进行读/写,请以文本模式打开文件,使用fscanf(fptr, ...)
和fprintf(fptr, ...)
。同样,如果您的文件包含二进制数据,则必须使用新文件输入删除文件start。
要从控制台阅读文字输入,您可以使用scanf
,而不是gets