Размещение данных в статическом массиве байтов фиксированной размерности с контролем переполнения - C (СИ)
Формулировка задачи:
Всем привет. С лабой 3 не могу сообразить.
Разработать две функции, одна из которых вводит с клавиатуры набор данных в произвольной последовательности и размещает в памяти в переменном формате. Другая функция читает эти данные и выводит на экран. Программа запрашивает и размещает в памяти несколько наборов данных при помощи первой функции, а затем читает их и выводит на экран при помощи второй. Размещение данных производить в статическом массиве байтов фиксированной размерности с контролем его переполнения.
Вариант 10
10. Произвольная последовательность строк и целых переменных. Байт со значением 0 - обозначает начало строки (последовательность символов, ограниченная нулем). Байт со значением N является началом последовательности N целых чисел. Конец последовательности - два нулевых байта.
Помогите, пожалуйста!
Где тут ошибки? И как правильно.
Вот код лабы 3
#include <stdio.h> #include <conio.h> #define N 100 char a[N]; void input(); void print(); void input() { int i; for (i = 0; i <= N; i++) { printf("Enter string and number: "); scanf_s("%s", a[i]); if (i == N) { printf("Array is full."); } } } void print() { int i; for (i = 0; i <= N; i++) { printf("%s", a[i]); } } void main() { input(); print(); _getch(); }
Решение задачи: «Размещение данных в статическом массиве байтов фиксированной размерности с контролем переполнения»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #define N 100 char A[N]; int *a; int i; char *str; void input(); void print(); void main() { input(); print(); _getch(); } void input() { for(i = 0, a = (int*)A; i < N/sizeof(int); i++) { a[i] = (int)i; printf("Enter string and number: "); scanf_s("%d", &a[i]); } for(; str[i] != 0; i++) { scanf_s("%c", &str[i]); } } void print() { for(i = 0; i < N; i++) { printf("%d ", a[i], "%s", str[i]); } }
Объяснение кода листинга программы
- Объявление переменных:
- char A[N]; Объявление статического массива байтов (строки) фиксированной размерности N.
- int *a; Указатель на первый элемент статического массива int (предполагается, что int занимает 4 байта).
- int i; Переменная для контроля переполнения (предполагается, что 4 байта).
- char *str; Указатель на первый элемент статического массива строки (предполагается, что строка занимает 1 байт).
- Объявление функций:
- void input(); Функция для ввода данных в статический массив.
- void print(); Функция для вывода данных из статического массива.
- В функции main() выполняются следующие действия:
- Вызов функции input(); Ввод данных в статический массив.
- Вызов функции print(); Вывод данных из статического массива.
- В функции input() выполняются следующие действия:
- Цикл for для заполнения статического массива int.
- Считывание строки и числа с помощью функции scanf_s().
- В функции print() выполняются следующие действия:
- Цикл for для вывода данных из статического массива.
- Вывод значения int и строки с помощью функции printf().
- В конце программы вызывается функция _getch() для приостановки выполнения программы до тех пор, пока пользователь не нажмет клавишу. Обратите внимание, что данный код не проверяет успешность выполнения функций scanf_s() и printf(), что может привести к возникновению неопределенного поведения.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д