Защита от ввода символов - C (СИ)
Формулировка задачи:
не могу поставить защиту от ввода символов, помогите, заранее спасибо.Уже встречался с такой проблемой,но толко не разобрался
#include<stdio.h> #include<locale.h> #include<windows.h> #define n 3 #define m 3 int main() { setlocale(LC_ALL, "Russian"); int i, j, ms[n][m], a, k; printf("Началная матрица\n "); for (i = 0; i < n; i++) { for (j = 0; j<m; j++) { printf("[%d][%d]=", i + 1, j + 1); scanf_s("%d", &ms[i][j]); } } { printf("Введите строку\n"); scanf_s("%d", &i); for (j = 0; j < m; j++) { for (k = 0; k < m; k++) { if (ms[i - 1][k] < ms[i - 1][j]) { a = ms[i - 1][j]; ms[i - 1][j] = ms[i - 1][k]; ms[i - 1][k] = a; } } } } for (i = 0; i<n; i++) { for (j = 0; j<m; j++) { printf("%3d", ms[i][j]); } puts("\n"); } system("pause"); return 0; }
Решение задачи: «Защита от ввода символов»
textual
Листинг программы
do { char str[16],*p; fgets(str,16,ctdin); n=strtol(str,&p,10); if(p!=str) break; }while(1);
Объяснение кода листинга программы
- В коде используется цикл do-while(1), который будет выполняться до тех пор, пока условие в нем истинно.
- Внутри цикла объявлены две переменные: строка str типа char и указатель p.
- Строка str имеет фиксированный размер в 16 символов.
- Функция fgets() используется для чтения строки из стандартного ввода (ctdin).
- Функция strtol() используется для преобразования строки в целое число.
- В качестве второго аргумента функции strtol() передается указатель на первый символ строки, который должен быть преобразован.
- В качестве третьего аргумента функции strtol() передается основание системы счисления, в данном случае это 10.
- Если преобразование прошло успешно, то указатель p будет указывать на символ, следующий за последним символом числа в строке.
- Если преобразование не удалось, то указатель p будет указывать на первый символ строки, и цикл прервется.
- В общем случае, значение переменной n будет равно введенному числу.
- Если значение переменной n не равно введенному числу, то это означает, что в строке были другие символы, и цикл прервется.
- Если значение переменной n равно введенному числу, то это означает, что в строке было только число, и цикл продолжится.
- Значение переменной n не сохраняется нигде в коде.
- Цикл выполняется до тех пор, пока не будет введено число или не будет введен любой другой символ.
- Если введено число, то цикл продолжится.
- Если введен любой другой символ, то цикл прервется.
- Введенное число не обрабатывается и не используется в коде.
- Размер строки str равен 16 символам.
- Если введено число, то оно будет прочитано как строка и будет содержать до 15 цифр.
- Если введен любой другой символ, то он будет прочитан как строка и будет содержать до 15 символов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д