Невнятый мусор при выводе - C (СИ)
Формулировка задачи:
Задача из k&r по преобразованию a-z в abc..xyz, также с цифрами, строчными и возможность обрабатывать вариации ввода типа a-b-c0-9. Написал функцию expand, однако при выводе массива символов вместе с адекватным выводом, выводится и мусор. Прошу вас помочь и объяснить откуда берется этот мусор. Компилировал на gcc 5.4.0 ubuntu. Спасибо
#include <stdio.h> void expand(char array[]) { unsigned short i, j, k; char stepComplete = 0; char start, end, type; char result[100]; j = 0; k = 0; for (i = 0; array[i] != '\0'; i++) { if (stepComplete == 0) { if (array[i] >= 'A' && array[i] <= 'Z') { start = array[i]; stepComplete = 1; } else if (array[i] >= 'a' && array[i] <= 'z') { start = array[i]; stepComplete = 1; } else if (array[i] >= '0' && array[i] <= '9') { start = array[i]; stepComplete = 1; } else { result[++j] = array[i]; } } else if (stepComplete == 1 && array[i] != '-') { stepComplete = 0; result[++j] = array[i]; } else if (stepComplete == 1 && array[i] == '-') { stepComplete = 2; } else if (stepComplete == 2) { if (array[i + 1] == '-') { stepComplete = 1; } else { end = array[i]; for (k = 0; k <= (end - start); k++) { result[++j] = start + k; } stepComplete = 0; } } } printf("\n"); printf("%d %c %c ", stepComplete, start, end); for(i = 0; result[i] != '\0'; i++) { printf("%c", result[i]); } printf("\n"); return; } void main(void) { char array[100], c; unsigned short i; for (i = 0; (c = getchar()) != EOF; i++) { array[i] = c; } expand(array); return; }
Решение задачи: «Невнятый мусор при выводе»
textual
Листинг программы
array[i] = '\0';
Объяснение кода листинга программы
В данном коде выполняется неявное преобразование типа данных из одного в другой.
В данном случае переменная i
содержит индекс элемента массива array
, который инициализируется значением '\0'.
Следует отметить, что в большинстве случаев такой код используется для присвоения значений по умолчанию (в данном случае значению '\0') элементам массива.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д