Member 13922884 Ответов: 1

Почему я получаю мусорное значение в выходных данных вместе с результатом?


#include <stdio.h>
void fun (char s1[]);
#define size 10
int main() 
{
     char s1 [size]="feb";
     fun (s1);
     return 0;
}
void fun (char s1[])
{
    char s2[size];
    int i=0;
    while (*s1 !='\0')
    {
        s2 [i]=*s1;
        s1++;
        i++;
    }
    printf ("\n%s",s2);
}


Что я уже пробовал:

Приведенный выше код - это всего лишь пример. Я хотел сравнить две строки в функции. Поэтому я передаю строку в другую символьную переменную. Но это приводит к мусорной стоимости вместе с результатом. Почему сюда были добавлены мусорные значения?

1 Ответов

Рейтинг:
9

Daniel Pfeffer

В вашей функции веселье(), вы копируете все, вплоть до завершающего символа "\0", но не копируете символ "\0". Это означает, что строка 's2' не завершается.

Существует стандартная функция - strcpy(), определенный в &ЛТ;строки.ч&ГТ; - это копирует строку, включающую завершающий символ '\0'. Вы должны использовать библиотечные функции там, где это возможно, если только у вас нет очень есть веская причина поступить иначе. Подобные ошибки - одна из причин. :)


Member 13922884

Спасибо.