Не считывается строка - 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 символ под терминатор строки.
Объяснение кода листинга программы
- В коде используется функция
fgets()
, которая предназначена для чтения строки из файла или стандартного ввода. В данном случае, вторым аргументом функции являетсяstr.PIB
, что предполагает, чтоstr
- это структура данных, аPIB
- одно из ее полей. Третий аргумент50
указывает максимальное количество символов, которые могут быть прочитаны. - После использования
fgets()
, код использует функциюscanf()
для чтения строки. Аргумент%49s
означает, что функцияscanf()
должна считать строку, длина которой не превышает 49 символов. Обратите внимание на использование-1
в качестве значения после%
. Это означает, что после 49 символов функцияscanf()
должна считать символ новой строки (или символ конца строки) и прекратить чтение. - Значение
str.PIB
представляет собой строку, которую считывает код. Это может быть любая строка, которую пользователь вводит на стандартный ввод.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д