Чтение строки из файла - C (СИ) (77086)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Помогите, пожалуйста, понять: Почему после вывода поля Имя из файла, данные год рождения и зарплата выводятся с новой строки? Сколько не смотрел в отладчике значения буфера fi - так и не нашел заветную \n... И можно ли как-то вывести все в одну строку? Спасибо.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#define SP system("pause");
#define CP SetConsoleCP(1251); SetConsoleOutputCP(1251);
#define NEWLINE putchar('\n');
#define konec  system("pause"); return 0;
 
int main()
{
    struct person
        {
            char fio[100];
            int birth;
            double salary;
        }
        rabotnik;
        
        char fi[100];
        int i;
        double d;
                
        CP
        
        printf("Введите ФИО работника: ");
        gets(rabotnik.fio);
        printf("Введите дату раждения работника: ");
        scanf("%d", &rabotnik.birth);
        printf("Введите размер зарплаты работника: ");
        scanf("%lf", &rabotnik.salary); 
        
        printf("Структура имеет размер - %d\n", sizeof(rabotnik));
        printf("%s %d %.2lf\n", rabotnik.fio, rabotnik.birth, rabotnik.salary);
        printf("Вывод в файл...\n");
        
        FILE *f;
        
        f = fopen("C:/test.txt", "wb");
        if(f == NULL) {printf("Ошибка открытия файла на запись.\n"); return 1;}
 
        fwrite(rabotnik.fio, sizeof(char), sizeof(rabotnik.fio)/sizeof(char), f);
        fwrite(&rabotnik.birth, sizeof(int), 1, f);
        fwrite(&rabotnik.salary, sizeof(double), 1, f);
        fclose(f);
        
        printf("Чтение из файла...\n");
        f = fopen("C:/test.txt", "rb");
        if(f == NULL) {printf("Ошибка открытия файла на чтение.\n"); return 2;}
        
        fread(fi, sizeof(char), sizeof(rabotnik.fio)/sizeof(char), f);
        fread(&i, sizeof(int), 1, f);
        fread(&d, sizeof(double), 1, f);
        fclose(f);
        
        puts(fi); printf("%d ", i); printf("%.2lf", d);
        
NEWLINE
konec   
}

Решение задачи: «Чтение строки из файла»

textual
Листинг программы
printf("%s %d %.2lf", fi, i, d);

Объяснение кода листинга программы

В данном коде происходит следующее:

  1. printf - это функция вывода информации на экран.
  2. %s %d %.2lf - это формат вывода информации в функции printf. Здесь %s означает, что нужно вывести строку, %d - целое число, а %.2lf - число с плавающей точкой (типа double) с точностью до двух знаков после запятой.
  3. fi, i и d - это переменные, которые содержат в себе информацию для вывода. Таким образом, данный код выводит на экран строку, целое число и число с плавающей точкой, используя указанный формат вывода.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.733 из 5
Похожие ответы