Не считывается строка - C (СИ)

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

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

Здравствуйте! Си начал только изучать, потому и такие глупые вопросы. Немогу считать данные - пропускает одну строку. Заранее спасибо!
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
#define KST 30

typedef struct READ { //шаблон структури
    char PIB[50];
    int rik;
    char stat[1];
    char adresa[20];
} INF;
INF mass[KST]; //масив структур
 
INF Vvid(void);
int main(void) {

    int i, kst;
    printf("Kilkist chitachiv:");
    scanf("%d", &kst);
    for (i = 0; i<kst; i++){
        mass[i] = Vvid();
    }
    //getchar();
    return (0);
}
 
INF Vvid(void){
    INF str;
    printf("\nPrizvische, iniciali: \n");
    gets(str.PIB);
    printf("\nRik narodzhenna: \n");
    scanf("%d", &str.rik);
    printf("\nStat: \n");
    gets(str.stat);
    printf("\nAdresda: \n");
    gets(str.adresa);
    getchar();
    return str;
}

Решение задачи: «Не считывается строка»

textual
Листинг программы
fgets(str.PIB, 50, stdin); // вторым аргументом - количество символов в строке, третьим - файл. в данном случае - стандартный ввод.
scanf("%49s", str.PIB); // -1 символ под терминатор строки.

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

  1. В коде используется функция fgets(), которая предназначена для чтения строки из файла или стандартного ввода. В данном случае, вторым аргументом функции является str.PIB, что предполагает, что str - это структура данных, а PIB - одно из ее полей. Третий аргумент 50 указывает максимальное количество символов, которые могут быть прочитаны.
  2. После использования fgets(), код использует функцию scanf() для чтения строки. Аргумент %49s означает, что функция scanf() должна считать строку, длина которой не превышает 49 символов. Обратите внимание на использование -1 в качестве значения после %. Это означает, что после 49 символов функция scanf() должна считать символ новой строки (или символ конца строки) и прекратить чтение.
  3. Значение str.PIB представляет собой строку, которую считывает код. Это может быть любая строка, которую пользователь вводит на стандартный ввод.

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


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

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

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