Что такое стандартный ввод и как он используется с fscanf?

c file stdin scanf randomaccessfile

5465 просмотра

2 ответа

Я не понимаю связь между 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); 

Scanf принять вход и положить нет в sturct Musteri

while(hesapBilgi.hesapno !=0){


            printf("enter a surname name and arrear --->"); 
            fscanf(stdin,"%s%s%lf",hesapBilgi.surname,hesapBilgi.name,&hesapBilgi.arrear);

здесь fscanf читает из данных в файле? или что-то еще происходит?

        fseek(ptr,(hesapBilgi.no-1)*,sizeof(struct musteri),SEEK_SET); 

что делает fseek?

        fwrite(&hesapBilgi,sizeof(struct musteri),1,ptr);

        printf("enter a no :");
        scanf("%d",&hesapBilgi.no);


    }
    fclose(ptr);
}


return 0;

}

Автор: Emrah Источник Размещён: 08.11.2019 10:58

Ответы (2)


3 плюса

Решение

Из документов ( man scanf):

scanf()Функция считывает входные данные из стандартного входного потока стандартного ввода, fscanf([FILE * stream, ...])считывает информацию из потока указателя потока [...]

stdinявляется FILE*. Это входной поток.

Из документов ( man stdin)

При нормальных обстоятельствах каждая программа UNIX имеет три открытых для нее потока при запуске, один для ввода, один для вывода и один для печати диагностических сообщений или сообщений об ошибках. Как правило, они подключены к терминалу пользователя [...]

Так

scanf( ...

на самом деле эквивалентно

fscanf(stdin, ...
Автор: alk Размещён: 20.08.2016 07:09

0 плюса

int fscanf ( FILE * stream, const char * format, ... );

он читает форматированный ввод из потока. и стандартный ввод - стандартный поток ввода

и fseek используется для Устанавливает индикатор позиции, связанный с потоком, в новую позицию.

SEEK_SET - флаг, который используется для установки позиции с начала файла

Пример fseek

#include <stdio.h>

int main ()
{
  FILE * pFile;
  pFile = fopen ( "example.txt" , "wb" );
  fputs ( "Fseek Hello World." , pFile );
  fseek ( pFile , 9 , SEEK_SET );
  fputs ( "no" , pFile );
  fclose ( pFile );
  return 0;
}

выход: Fseek Helno World

Автор: developer.ahm Размещён: 20.08.2016 06:48
Вопросы из категории :
32x32