Невнятый мусор при выводе - 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') элементам массива.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5
Похожие ответы