Защита от ввода символов - 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);

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

  1. В коде используется цикл do-while(1), который будет выполняться до тех пор, пока условие в нем истинно.
  2. Внутри цикла объявлены две переменные: строка str типа char и указатель p.
  3. Строка str имеет фиксированный размер в 16 символов.
  4. Функция fgets() используется для чтения строки из стандартного ввода (ctdin).
  5. Функция strtol() используется для преобразования строки в целое число.
  6. В качестве второго аргумента функции strtol() передается указатель на первый символ строки, который должен быть преобразован.
  7. В качестве третьего аргумента функции strtol() передается основание системы счисления, в данном случае это 10.
  8. Если преобразование прошло успешно, то указатель p будет указывать на символ, следующий за последним символом числа в строке.
  9. Если преобразование не удалось, то указатель p будет указывать на первый символ строки, и цикл прервется.
  10. В общем случае, значение переменной n будет равно введенному числу.
  11. Если значение переменной n не равно введенному числу, то это означает, что в строке были другие символы, и цикл прервется.
  12. Если значение переменной n равно введенному числу, то это означает, что в строке было только число, и цикл продолжится.
  13. Значение переменной n не сохраняется нигде в коде.
  14. Цикл выполняется до тех пор, пока не будет введено число или не будет введен любой другой символ.
  15. Если введено число, то цикл продолжится.
  16. Если введен любой другой символ, то цикл прервется.
  17. Введенное число не обрабатывается и не используется в коде.
  18. Размер строки str равен 16 символам.
  19. Если введено число, то оно будет прочитано как строка и будет содержать до 15 цифр.
  20. Если введен любой другой символ, то он будет прочитан как строка и будет содержать до 15 символов.

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


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

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

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