0

我编写了一个程序,首先将数据写入结构,然后使用函数将其写入文件fprint,然后我再次希望将数据显示到屏幕上,为此我使用fscanf了函数但是出了点问题,我不能做任何事情那些。

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

struct student
{
int rollNo,intakeYear;
char name[20];
};

int main()
{
struct student s[2];
FILE *ptr;
ptr = fopen("student.txt","w+");
if(ptr == NULL)
{
    printf("Couldnot open the file");
    exit(1);
}
for(int i = 0 ; i < 2 ; i++)
{
    printf("Enter the name of student\n");
    scanf("%s",s[i].name);
    printf("Enter the roll number\n");
    scanf("%d",&s[i].rollNo);
    printf("Enter the  intakeYear\n");
    scanf("%d",&s[i].intakeYear);
    fprintf(ptr,"%s%d%d",s[i].name,s[i].rollNo,s[i].intakeYear);
}
for(int i = 0 ; i < 2 ; i++)
{
    fscanf(ptr,"%s%d%d",s[i].name,&s[i].rollNo,&s[i].intakeYear);
    printf("Name:%s",s[i].name);
    printf("Roll:%d\n",s[i].rollNo);
    printf("Intake Year:%d\n",s[i].intakeYear);
}
fclose(ptr);
return 0;
 }

我不知道这里出了什么问题,但是如果我删除代码的 fscanf 部分,文件就会被创建并且数据也会被写入其中。

4

1 回答 1

0

您正在打开文件并写入它,移动到文件的末尾,然后尝试读取它。您可以使用fseekorrewind函数,在某些情况下这样做可能是个好主意,但在这种情况下,我会在写入文件后关闭文件并重新打开它以供阅读。

于 2021-01-25T18:40:01.297 回答