Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C (СИ) Задача про две параллельные стены и угол отражения Имеются две стены, отстоящие друг от друга на n метров. Пол между ними является зеркальным. С высоты k метров одной из стены испускается луч лазера под углом b (0 ≤ b ≤ π) к этой стене в вертикальной... Коротко о синусе https://www.cyberforum.ru/ c-beginners/ thread3085173.html C (СИ) Деление действительных чисел https://www.cyberforum.ru/ c-beginners/ thread3085406.html
float rowSum(float *x, float *eps, int *n_max){ float y, temp; float a; int n; y = 0, a = 0; a = (x-1.0)/x; В последней строке возникает ошибка "Invalid operands... lrrrtm, x - это указатель. К указатели нельзя прибавлять (вычитать) плавающее число (1.0) И делить на указатель... тоже как-то глупо. Вот *x - это уже число (float) Если бы ты написал "(x -1)/x" ,...
C (СИ) Суммы элементов столбцов матрицы https://www.cyberforum.ru/ c-beginners/ thread3085794.html
Вводится прямоугольная целочисленная матрица. Равны ли в ней суммы элементов во всех столбцах int sum1=0,sum2=0,i,j,n,m,A; Барышня, Вам в общей сложности уже раз 20 объяснили, почему выделенное в этой строке не имеет смысла. Но Вы с достойным восхищения упорством продолжаете тащить это из...
C (СИ) побитовые операции/операции с битами Написать шифр который знак на две половины(4 + 4 бита) , в первой половине биты разделить на две пары и их значения в паре заменить взаимно(с пары 10 выйдет пара 01, а с 00 получится 00, полученные 4... 4 бита https://www.cyberforum.ru/ c-beginners/ thread3085309.html
Двумерный массив с условием C (СИ)
3. в файле data.dat задан двумерный массив целых чисел в следующем виде: в первой строке задано количества строк и столбцов массива, а далее в каждой строке файла задается одна строка двумерного... DaraChernyshova, #include <stdio.h> #include <stdlib.h> #include <assert.h> #define IN_FILE_NAME "data.dat" #define OUT_FILE_NAME "data.res" int main(void) { FILE * f;
C (СИ) Передача матрицы в функцию
Всем привет. Программа падает в рантайме при попытке обращения к матрице в 5 строке. Никак не могу понять, что здесь не так? #include <stdio.h> void print_first( int** matrix ) { printf(... void print_first(int** matrix) { printf("%d\n", *matrix); } Добавлено через 38 секунд единицу выводит...
C (СИ) Задача Шеренга https://www.cyberforum.ru/ c-beginners/ thread3085556.html
Петя перешёл в другую школу. На уроке физкультуры ему понадобилось определить своё место в строю. Помогите ему это сделать. Программа получает на вход невозрастающую последовательность натуральных... Kasigin, То есть задача сводится к тому, чтобы посчитать, сколько чисел в массиве больше или равны заданному. Ну и с какого момента у Вас с этим сложности начинаются?
Добавить перед каждым четным элементов списка единицу C (СИ)
Вводится последовательность целых чисел. Длина последовательности неизвестна. Конец последовательности – точка. Сформировать из последовательности чисел однонаправленный линейный список, добавляя... #include <stdio.h> #include <stdlib.h> typedef struct node { int val; struct node *next; } node_t; void list_print( node_t* pHead )
Для заданных чисел M и N сформировать матрицу, заполненную по спирали числами от 1 до M⋅N C (СИ)
int arr; int row = 0; int col = 0; int maxRow = M - 1; int maxCol = N - 1; int num = 1; while (row <= maxRow && col <= maxCol) { for (int i = col; i <= maxCol; i++) arr...
C (СИ) Определить и напечатать строку матрицы, для которой сумма абсолютных величин наибольшего и наименьшего элементов минимал Определить и напечатать строку матрицы, для которой сумма абсолютных величин наибольшего и наименьшего элементов минимальна. #include <stdio.h> #include <math.h> #include <string.h> #include... Ekaterinaaaa, гражданочка, это Вам от какой-то другой задачи решение дали. Даже язык не тот... #include <stdio.h> #include <stdlib.h> #include <time.h> int* min_element(const int* array, size_t... https://www.cyberforum.ru/ c-beginners/ thread3085438.html
Удалить часть символьной строки, заключенную между последовательностями символов /* и */ C (СИ)
Здравствуйте! Помогите, пожалуйста, разобраться. Не понимаю в чем ошибка? Задание : Удалить часть символьной строки, заключенную между последовательностями символов /* и */. Входные данные:... analogov net, К твоему коду (пост 4) есть пара замечаний. 1. удаляется только одна пара /*,,, */ Исправить не сложно char *left; while ((left = strstr(buf, "/*")!=NULL ) { char *right =...
C (СИ) Как решать задачи с циклами https://www.cyberforum.ru/ c-beginners/ thread3085746.html
Привет. Есть проблема при изучении Си - работа с циклами for. Решаю задачи на Степике чуть ли не подбором. Здесь на форуме много решений, например, по поиску простых чисел и подобные. Но одно дело... RomanD83, Никлауса Вирта читай. Уж если у кого составлению алгоритмов учиться, то как-раз у него, да!
И тут вот те нате
322 / 209 / 117
Регистрация: 12.07.2016
Сообщений: 555
07.03.2023, 20:00 0

Создание функции ввода значений с клавиатуры и проверкой на наличие ошибок в scanf - C (СИ) - Ответ 16792745

07.03.2023, 20:00. Показов 803. Ответов 4
Метки (Все метки)

Лучший ответ Сообщение было отмечено Reifnm как решение

Решение

Вот так работает со всеми, кроме строк. А со строками сложнее. Сначала нужно узнать размер входной строки, потом делать что-то типа pSF = (char*)malloc( LineSize ); Так еще и после такого считывания, вызывающий функцию scf должен не забыть освободить память, которую он сам не выделял (это неявно сделает функция scf) - это плохое архитектурное решение.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
#include <string.h>
//  SF_tip:   1 = %d   2 = %lf   3 = %f   4 = %c   
 
void scf(void* pSF, int SF_tip);
 
 
int main() {
    setlocale(LC_ALL, "Rus"); //Подключаем русский
    int I = 1111;
    double D = 2222;
    float F = 3333;
    char S[] = "4_СТРОКА_S";
    
    //double* DM = (double*)calloc(n, sizeof(double));
 
 
    printf("\nВведи число I = \n");
    scf(&I,1);
    printf("\nВведи число D = \n");
    scf(&D,2);
    printf("\nВведи число F = \n");
    scf(&F,3);
    // printf("\nВведи строку S = \n");
    // scf(&S,4);
 
    printf("\n\n\033[38;2;255;90;95m ВЫВОД:\nI = %d  \nD = %lf   \nF = %f   \nS = %s \n \033[0m\n",I,D,F,S);
 
}
 
void scf(void* pSF, int SF_tip) {      //  SF_tip:   1 = %d   2 = %lf   3 = %f   4 = %c   
    
    printf("ПЕРЕДАННЫЕ ЗНАЧЕНИЯ В FX pSF = %lf |  SF_tip = %d \n", *(double*)pSF, SF_tip);
 
    switch (SF_tip) {
        case 1: 
        {
            int SF_i;
            while (scanf("%d", &SF_i) != 1)
            {
                scanf("%*[^\n]%*c");
                printf("Вы ввели неправильное значение, проверьте и введите корректное значение:  \n");
            }
                    
            *(int*)pSF = SF_i;
            printf("\033[38;2;95;255;175m    //1 Получено значение = %d \033[0m\n", *(int*)pSF);
        }
        break;
      
        case 2: 
        {
            double SF_d;
            while (scanf("%lf", &SF_d) != 1)
            {
                scanf("%*[^\n]%*c");
                printf("Вы ввели неправильное значение, проверьте и введите корректное значение:  \n");
            }
     
            *(double*)pSF = SF_d;
            printf("\033[38;2;95;255;175m    //2 Получено значение = %lf \033[0m\n", *(double*)pSF);
        }
        break; 
     
 
        case 3: 
        {
            float SF_f;
            while (scanf("%f", &SF_f) != 1)
            {
                scanf("%*[^\n]%*c");
                printf("Вы ввели неправильное значение, проверьте и введите корректное значение:  \n");
            }
            *(float*)pSF = SF_f;
            printf("\033[38;2;95;255;175m    //3 Получено значение = %f \033[0m\n", *(float*)pSF);
        }
        break;
 
        // case 4: 
        // {
        //     char SF_s[] = "Hello";
        //     while (scanf("%s", &SF_s) != 1)
        //     {
        //         scanf("%*[^\n]%*c");
        //         printf("Вы ввели неправильное значение, проверьте и введите корректное значение:  \n");
        //     }
     
        //     *(pSF = SF_s;
        //     printf("\033[38;2;95;255;175m    //4 Получено значение = %s \033[0m\n", *pSF);
        // }
        // break;  
    
    
    default: printf("\n\n\033[38;2;95;255;175mERROR SINTAXIS\n!!!Вы ввели неправильный тип в SCANF!!!\033[0m\n\n\n");
 
    }
 
    scanf("%*[^\n]%*c");
}


Вернуться к обсуждению:
Создание функции ввода значений с клавиатуры и проверкой на наличие ошибок в scanf C (СИ)
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.03.2023, 20:00
Готовые ответы и решения:

С помощью функции scanf() ввести несколько значений подряд с клавиатуры
Здравствуйте.Столкнулся с таким маленьким недопонимаем. Нужно с помощью функции scanf ввести несколько значений подряд, вот так: for...

Visual C++ 2012. Консоль. scanf(). Обработка ошибок ввода
Я использую процедуру scanf() для ввода даты через точку (типа 01.01.2000). Мне надо сделать так, чтобы обрабатывались ошибки при вводе...

Функция ввода с клавиатуры scanf
Здравствуйте. WinXP, MS VS20005 В приведенном коде BBB независимо от введенного с клавиатуры значения =0. Однако если...

4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.03.2023, 20:00
Помогаю со студенческими работами здесь

11(3) напишите программу ввода слов с клавиатуры с проверкой возможности к
Пример 3. С помощью директив условной компиляции и символической константы _DEBUG напишите программу ввода слов с клавиатуры с проверкой...

метод инициализации с проверкой значений на корректность, введены с клавиатуры
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; class Progression{ private: float first; int second; ...

Функции ввода/вывода printf(), scanf().
Составить программу для форматированного ввода и вывода данных заданного типа: Тип1=unsigned int; тип2= long int; тип3=float;...

Проверить программу вычисления функции на наличие ошибок
Помогите пожалуйста проверить программу на наличие ошибок (может она вообще не так работает). Поставленное задание: Записать 3 варианта...

Алгоритм и программа ввода значений с клавиатуры.
Помогите разработать алгоритм и программу, реализующую этот алгоритм. Надо сделать через процедуру. Ввод значений с клавиатуры. Заранее...

0
Новые блоги и статьи
Kafka или Pulsar: Что лучше для потоковой обработки в Java
Javaican 14.03.2025
Среди множества решений для потоковой обработки данных Apache Kafka долгое время удерживала лидирующие позиции, став де-факто стандартом в индустрии. Однако в последние годы всё больше внимания. . .
Создание и использование компонентов в Vue 3
Reangularity 14.03.2025
Компонент в Vue - это автономный блок интерфейса, который содержит собственную разметку, логику и стили. Представьте себе кнопку, форму ввода или даже целую панель навигации - всё это можно оформить. . .
Vue 3: Создаем современное веб-приложение с Composition API
Reangularity 14.03.2025
В фронтенд-разработке Vue 3 выделяется своим прагматичным подходом. В отличие от React с его минималистичной философией "всё — JavaScript" или Angular с его всеобъемлющим корпоративным подходом, Vue. . .
Разработка контекстных меню в iOS
mobDevWorks 14.03.2025
С приходом iOS 13 Apple представила новый API для контекстных меню, который полностью заменил предыдущую технологию 3D Touch peek & pop. Хотя многие разработчики и пользователи испытывают ностальгию. . .
Лучшие практики оптимизации Docker Image
Mr. Docker 13.03.2025
Размер Docker-образа влияет на множество аспектов работы с контейнерами. Чем больше образ, тем дольше его загрузка в реестр и выгрузка из него. Для команд разработки, работающих с CI/ CD пайплайнами,. . .
Вопросы на собеседовании по Docker
Mr. Docker 13.03.2025
Ты сидишь напротив технического специалиста, и вдруг звучит вопрос про Docker Swarm или многоэтапные сборки. Пот на лбу? Не переживай, после этой статьи ты будешь готов ко всему! Эта статья будет. . .
Поиск текста в сносках : замена дефиса на тире или тире на дефис...
РоΜа 13.03.2025
Нужно было найти текст в сносках и заменить. Почему-то метод селекшн не сработал. . . пришлось гуглить. найденный на форумвба код пришлось править. Смысл - заменяет в сносках дефисы и тире на нужные. . . .
Real PATH definitions in bash scripts
jigi33 13.03.2025
Как поймать путь и путь к директории относительно запускаемого файла в BASH 1. поймать путь через вывод $(pwd) 2. более правильно - на основе realpath (см. скриншот)
Django или Flask: что выбрать для веб-разработки на Python
py-thonny 13.03.2025
Django – это высокоуровневый фреймворк, который придерживается философии "всё включено". Он предоставляет разработчику готовые решения для большинства типичных задач веб-разработки: от аутентификации. . .
Непрерывное развертывание в Java с Kubernetes
Javaican 13.03.2025
Чем так привлекателен Kubernetes для развертывания Java-приложений? Этот оркестратор контейнеров позволяет автоматизировать развертывание, масштабирование и управление контейнеризированными. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru