Перевод с++ в с, или чем заменить getline и string - C (СИ)
Формулировка задачи:
Нужно перевести этот кусок кода В частности интересует как заменить getline и string.
#include <iostream> #include <string> #include <windows.h> using namespace std; bool password_is_valid(string password) { string valid_pass = "qwerty123"; if (valid_pass == password) return true; else return false; } void get_pass() { static int tryCnt = 0; if (++tryCnt > 3) { cout << "\n > Доступ запрещён!\n" << endl; return; } string user_pass; cout << "Введите пароль: "; getline(cin, user_pass); if (!password_is_valid(user_pass)) { cout << "Неверный пароль!" << endl; get_pass(); } else { cout << "\n > Доступ разрешен!\n" << endl; tryCnt = 0; system("cls"); } } int main() { setlocale(0, "rus"); cout << "У вас есть 3 попытки! Помните об этом." << endl; get_pass(); cout << "Continue..." << endl; system("pause"); return 0; }
Решение задачи: «Перевод с++ в с, или чем заменить getline и string»
textual
Листинг программы
char user_pass[20];
Объяснение кода листинга программы
- Объявлена переменная
user_pass
типа char, которая является массивом на 20 элементов. - Размер массива в байтах равен 20. В зависимости от реализации, размер массива в символах может быть меньше (например, если используется мультибайтная кодировка).
- В данной реализации, скорее всего, будет использоваться однобайтовая кодировка, поэтому размер массива в символах и в байтах совпадает.
- При использовании строки в C++ вместо
user_pass
нужно было бы указатьuser_pass[]
, чтобы указать, что это массив. - В C++ вместо
user_pass
можно было бы использовать std::string, чтобы работать с строками более удобным способом. - Если в C++ использовать std::getline для чтения строки, то его можно было бы заменить на fgets в C.
- Вместо
user_pass
можно было бы использовать любую другую переменную, например,password
. - Если в C++ использовать std::string для хранения строки, то его можно было бы заменить на char* в C.
- Если в C++ использовать std::stringstream для обработки строки, то его можно было бы заменить на sscanf в C.
- Если в C++ использовать std::cout для вывода строки, то его можно было бы заменить на printf в C.
- Если в C++ использовать std::cin для ввода строки, то его можно было бы заменить на scanf в C.
- Если в C++ использовать std::string для хранения строки, то его можно было бы заменить на char* в C, указав
user_pass
как массив символов. - Если в C++ использовать std::stringstream для обработки строки, то его можно было бы заменить на sscanf в C, указав
user_pass
как массив символов. - Если в C++ использовать std::cout для вывода строки, то его можно было бы заменить на printf в C, указав
user_pass
как массив символов. - Если в C++ использовать std::cin для ввода строки, то его можно было бы заменить на scanf в C, указав
user_pass
как массив символов. - В данном коде не происходит ничего, кроме объявления переменной
user_pass
. - Нет никаких операций с этой переменной, поэтому она остается неинициализированной.
- Нет никаких условий или циклов, которые могли бы изменить значение этой переменной.
- Нет никаких функций или операций, которые могли бы использовать эту переменную.
- Нет никаких других переменных или структур данных, которые могли бы быть связаны с этой переменной.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д