Функция scanf_s не работает нормально с массивом - C (СИ)
Формулировка задачи:
Во время работы с массивами обнаружил, что не работает, казалось бы корректная программа. В итоге, в новом проекте создал простейшую программу.
Она позволила выяснить что scanf_s не работает нормально с массивом... Есть какие-то варианты решения? И почему Visual Studio 2013 не позволяет использовать стандартный scanf?
#include <stdio.h> #include <conio.h> int main() { int i; char a[5]; for (i = 0; i < 5; i++) { printf("a[%d]=", i); scanf_s("%s", a); } printf("%s", a); _getch(); }
Решение задачи: «Функция scanf_s не работает нормально с массивом»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main(void) { char c = 0; char s1[80] = { 0 }; char s2[80] = { 0 }; scanf_s("%c", &c, 1); //при записи одного символа указывается просто спецификатор преобразования, после адрес куда записывается, и едничка, которая говорит о том, что должен быть один символ scanf_s("%s", s1, _countof(s1)); //при записистроки можно писать просто спецификатор преобразования, затем адрес куда записывать и такую интересную вещь как _countof(s1) scanf_s("%79s", s2, _countof(s2)); //то же самое, но в спецификатор преобразования нужно вписать максимальный размер строки(не забываем про нуль-символ) }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем функцию main
- Объявляем переменные: c - символ, инициализирован нулем; s1, s2 - строки, инициализированы нулями.
- Используем функцию scanf_s для чтения данных:
- Первое использование: считываем один символ с помощью спецификатора
%c
и адреса переменной c, указываем 1 в качестве второго аргумента, чтобы указать, что мы хотим прочитать один символ. - Второе использование: считываем строку с помощью спецификатора
%s
и адреса переменной s1, указываем _countof(s1) в качестве второго аргумента, чтобы указать размер массива. - Третье использование: считываем строку с помощью спецификатора
%79s
и адреса переменной s2, указываем _countof(s2) в качестве второго аргумента, чтобы указать размер массива.
- Первое использование: считываем один символ с помощью спецификатора
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д