Emr*_*rah 3 c stdin file scanf randomaccessfile
我不明白 stdin 和 fscanf 之间的联系
struct musteri{
int no;
char name[40];
char surname[25];
double arrear;
};
int main() {
struct musteri hesapBilgi={0,"","",0.0};
FILE *ptr;
if((ptr=fopen("eleman.txt","r+"))==NULL){
printf("error");
}
else{
printf("\n enter a no if you want exit enter 0 -->");
scanf("%d",&hesapBilgi.no);
Run Code Online (Sandbox Code Playgroud)
scanf 接受输入并将 no 放入 sturct musteri
while(hesapBilgi.hesapno !=0){
printf("enter a surname name and arrear --->");
fscanf(stdin,"%s%s%lf",hesapBilgi.surname,hesapBilgi.name,&hesapBilgi.arrear);
Run Code Online (Sandbox Code Playgroud)
在这里 fscanf 读取文件中的数据吗?或者其他事情正在发生?
fseek(ptr,(hesapBilgi.no-1)*,sizeof(struct musteri),SEEK_SET);
Run Code Online (Sandbox Code Playgroud)
fseek 在做什么?
fwrite(&hesapBilgi,sizeof(struct musteri),1,ptr);
printf("enter a no :");
scanf("%d",&hesapBilgi.no);
}
fclose(ptr);
}
return 0;
Run Code Online (Sandbox Code Playgroud)
}
从文档(man scanf):
该
scanf()函数从标准输入流 stdinfscanf([FILE * stream, ...])读取输入,从流指针流 [...]
stdin是一个FILE*。它是一个输入流。
从文档 ( man stdin)
在正常情况下,每个 UNIX 程序在启动时都会为其打开三个流,一个用于输入,一个用于输出,一个用于打印诊断或错误消息。这些通常连接到用户的终端 [...]
所以
scanf( ...
Run Code Online (Sandbox Code Playgroud)
实际上相当于
fscanf(stdin, ...
Run Code Online (Sandbox Code Playgroud)