Считывание пользовательского ввода на языке C

CCBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь считывать пользовательский ввод на языке программирования C с использованием функции scanf(). Функция scanf() представляет собой мощный инструмент для считывания ввода от пользователей и определена в стандартной библиотеке ввода-вывода stdio.h. Язык C является строго типизированным и поддерживает различные типы данных. В рамках этого практического занятия мы сосредоточимся на использовании типов данных char и int для считывания и отображения пользовательского ввода.

Это Guided Lab, который предоставляет пошаговые инструкции, чтобы помочь вам учиться и практиковаться. Внимательно следуйте инструкциям, чтобы выполнить каждый шаг и получить практический опыт. Исторические данные показывают, что это лабораторная работа уровня начальный с процентом завершения 81.17%. Он получил 97.18% положительных отзывов от учащихся.

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/PointersandMemoryGroup(["Pointers and Memory"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c(("C")) -.-> c/CompoundTypesGroup(["Compound Types"]) c/BasicsGroup -.-> c/variables("Variables") c/BasicsGroup -.-> c/data_types("Data Types") c/BasicsGroup -.-> c/operators("Operators") c/BasicsGroup -.-> c/comments("Comments") c/CompoundTypesGroup -.-> c/strings("Strings") c/PointersandMemoryGroup -.-> c/memory_address("Memory Address") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-136075{{"Считывание пользовательского ввода на языке C"}} c/data_types -.-> lab-136075{{"Считывание пользовательского ввода на языке C"}} c/operators -.-> lab-136075{{"Считывание пользовательского ввода на языке C"}} c/comments -.-> lab-136075{{"Считывание пользовательского ввода на языке C"}} c/strings -.-> lab-136075{{"Считывание пользовательского ввода на языке C"}} c/memory_address -.-> lab-136075{{"Считывание пользовательского ввода на языке C"}} c/function_declaration -.-> lab-136075{{"Считывание пользовательского ввода на языке C"}} c/user_input -.-> lab-136075{{"Считывание пользовательского ввода на языке C"}} c/output -.-> lab-136075{{"Считывание пользовательского ввода на языке C"}} end

Настройка среды разработки

На этом шаге мы настроим нашу среду разработки и создадим новый файл на языке C для нашей программы.

  1. Откройте терминал в WebIDE. По умолчанию вы должны находиться в директории /home/labex/project. Если вы не уверены, вы можете ввести команду pwd (print working directory - вывести текущую рабочую директорию), чтобы проверить свое текущее местоположение.

  2. Создайте новый файл с именем user_input.c с использованием следующей команды:

    touch user_input.c

    Команда touch создает новый пустой файл, если он не существует, или обновляет временную метку существующего файла.

  3. Откройте файл user_input.c в редакторе WebIDE. Вы можете сделать это, кликнув на имя файла в проводнике файлов слева в WebIDE или используя опцию Open File в меню File.

Написание базовой структуры программы

На этом шаге мы напишем базовую структуру нашей программы на языке C.

  1. В файле user_input.c добавьте следующий код:

    #include <stdio.h>
    
    int main() {
        // We will add our code here
        return 0;
    }

    Разберем этот код на части:

    • #include <stdio.h> сообщает компилятору включить стандартную библиотеку ввода-вывода. В этой библиотеке содержатся такие функции, как printf() и scanf(), которые мы будем использовать для ввода и вывода данных.
    • int main() - это главная функция, с которой начинается выполнение нашей программы. Каждая программа на языке C должна иметь главную функцию.
    • Фигурные скобки { } определяют тело главной функции.
    • return 0; в конце функции main указывает, что программа успешно завершила выполнение.
  2. Сохраните файл. Вы можете сделать это, нажав Ctrl+S или выбрав опцию Save в меню File.

Реализация ввода имени пользователя

Теперь реализуем функциональность для считывания имени пользователя.

  1. Измените файл user_input.c, добавив следующий код внутри функции main():

    #include <stdio.h>
    
    int main() {
        char name[100];
    
        printf("Enter your name: ");
        scanf("%s", name);
    
        printf("Hello, %s!\n", name);
    
        return 0;
    }

    Вот, что делает каждая новая строка:

    • char name[100]; объявляет массив символов (строку), который может содержать до 99 символов плюс нулевой символ-терминатор.
    • printf("Enter your name: "); предлагает пользователю ввести свое имя.
    • scanf("%s", name); считывает строку из пользовательского ввода и сохраняет ее в массиве name. Спецификатор формата %s используется для считывания строк.
    • printf("Hello, %s!\n", name); выводит приветствие с использованием имени, введенного пользователем. В форматированной строке %s заменяется значением переменной name.
  2. Сохраните файл.

Добавление ввода возраста

Давайте расширим нашу программу, чтобы она также запрашивала возраст пользователя.

  1. Измените файл user_input.c, добавив ввод возраста:

    #include <stdio.h>
    
    int main() {
        char name[100];
        int age;
    
        printf("Enter your name: ");
        scanf("%s", name);
    
        printf("Enter your age: ");
        scanf("%d", &age);
    
        printf("Hello, %s! You are %d years old.\n", name, age);
    
        return 0;
    }

    Что нового здесь:

    • int age; объявляет целочисленную переменную для хранения возраста пользователя.
    • Мы добавили еще одну пару printf() и scanf() для запроса и считывания возраста.
    • scanf("%d", &age); считывает целое число из пользовательского ввода. Спецификатор формата %d используется для целых чисел. Обратите внимание на & перед age - это потому, что scanf() требует адрес памяти переменной для сохранения ввода.
    • В последнем printf() теперь в выходном сообщении также выводится возраст.
  2. Сохраните файл.

Компиляция и запуск программы

На этом последнем шаге мы скомпилируем нашу программу на языке C и запустим ее, чтобы увидеть результаты.

  1. В терминале перейдите в директорию, содержащую файл user_input.c:

    cd /home/labex/project

    Этот шаг гарантирует, что вы находитесь в правильной директории. Если вы уже там, вы увидите сообщение "cd: no such file or directory", которое можно проигнорировать.

  2. Скомпилируйте программу с использованием компилятора GCC:

    gcc user_input.c -o user_input

    Эта команда сообщает GCC скомпилировать файл user_input.c и создать исполняемый файл с именем user_input. Если в вашем коде есть ошибки, вы увидите здесь сообщения об ошибках. В таком случае вернитесь к своему коду, исправьте ошибки и попробуйте скомпилировать снова.

  3. Запустите скомпилированную программу:

    ./user_input

    ./ сообщает оболочке искать программу в текущей директории.

Terminal compiling C program
  1. Программа попросит вас ввести ваше имя и возраст. Введите свои ответы и нажмите Enter после каждого ввода.

  2. Вы должны увидеть персонализированное приветственное сообщение с вашим именем и возрастом.

Если вы столкнетесь с какими-либо проблемами, перепроверьте ваш код на опечатки и убедитесь, что вы сохранили все изменения перед компиляцией.

Итоги

В этом практическом занятии вы научились считывать пользовательский ввод на языке C с использованием функции scanf(). Вы создали программу, которая запрашивает у пользователя его имя и возраст, считывает введенные данные и выводит персонализированное приветственное сообщение. В ходе этого упражнения вы познакомились с базовыми операциями ввода-вывода на языке C, работой с различными типами данных (массивами char для строк и int для целых чисел) и процессом компиляции и запуска программы на языке C.

Основные выводы:

  1. Функция scanf() используется для считывания пользовательского ввода.
  2. В зависимости от типа вводимых данных используются различные спецификаторы формата (%s для строк, %d для целых чисел).
  3. При считывании целых чисел или других нестроковых типов с помощью scanf() необходимо использовать оператор & для передачи адреса переменной.
  4. Процесс компиляции преобразует ваш код на языке C в исполняемую программу.

Эти фундаментальные навыки являются основой для более сложных задач программирования на языке C и будут полезны вам в дальнейшем обучении и развитии своих программистских способностей. Помните, что практика - ключ к успеху в программировании. Попробуйте изменить эту программу или создать новые, чтобы закрепить полученные знания!