Функция копирования в символьный массив - C (СИ)
Формулировка задачи:
Программа работает не корректно. После первого запуска всегда пропускается ввод второй строки. Подозреваю, что это связано с символом конца строки после ввода количества символов в строке.
#include <stdio.h> #include <string.h> #include <stdlib.h> #define LIM 1000 void strng_cpy (char *a, char *b, int count); int main(void) { int max; int count; char c; printf("Введите максимальное количество элементов в строке\n"); scanf("%d", &max); char *string1 = (char *)malloc(max * sizeof(char)); char *string2 = (char *)malloc(max * sizeof(char)); do { printf("Введите вторую строку\n"); fgets(string2, max, stdin); printf("вы ввели:\n%s\n%s\n", string1, string2); printf("Выберите количество символов, которое необходимо скопировать из второй строки\n"); scanf("%d", &count); strng_cpy(string1, string2, count); printf("%s\n%s\n", string1, string2); printf("Нажмите любую кнопку для продолжения или q для выхода\n"); } while((c = getchar()) != 'q'); printf("Всего хорошего\n"); } void strng_cpy (char *a, char *b, int count) { int i = 0; while(i++ < count) { *a++ = *b++; } }
Решение задачи: «Функция копирования в символьный массив»
textual
Листинг программы
do { printf("Введите вторую строку\n"); fgets(string2, max, stdin); printf("вы ввели:\n%s\n%s\n", string1, string2); printf("Выберите количество символов, которое необходимо скопировать из второй строки\n"); scanf("%d", &count); printf("%s\n%s\n", strng_cpy(string1, string2, count), string2); printf("Нажмите любую кнопку для продолжения или q для выхода\n"); while(getchar()!='\n') { continue; } } while(getchar() != 'q'); printf("Всего хорошего\n"); } char * strng_cpy (char *a, char *b, int count) { int i = 0; char *pt; while(i++ < count) { *a++ = *b++; } *a = 0; return a; }
Объяснение кода листинга программы
- Программа запрашивает у пользователя ввод двух строк.
- Функция
fgets()
используется для считывания строки со стандартного ввода и сохраняет её в переменнойstring2
. - Введенные строки выводятся на экран.
- Пользователю предлагается выбрать количество символов для копирования из второй строки.
- Введенное значение сохраняется в переменной
count
. - Вызывается функция
strng_cpy()
, которая принимает три аргумента: исходную строку, строку для копирования и количество символов для копирования. - Результат работы функции
strng_cpy()
выводится на экран. - В цикле, пока пользователь не нажмет любую кнопку, программа продолжает работу.
- Если пользователь вводит 'q', программа завершается.
- После завершения программы выводится сообщение
Всего хорошего
. - В функции
strng_cpy()
объявлены три переменные:i
(счетчик),pt
(указатель на текущий символ). - В цикле
while
происходит копирование символов из строкиb
в строкуa
. - Каждый символ копируется путем присвоения указателю
a
значения указателяb
. - Переменная
i
увеличивается на 1 после каждого присвоения. - После завершения цикла, в конце строки
a
устанавливается нулевой символ. - Функция возвращает указатель
a
. - Ввод и вывод в функции
strng_cpy()
не используются. - В функции
strng_cpy()
не используются стандартные библиотеки. - Функция
strng_cpy()
не обрабатывает ошибки. - Код не содержит комментариев.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д