Попытка печати в C при создании функций - PullRequest
0 голосов
/ 30 марта 2020

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

Спасибо!

# include <cs50.h>
# include <stdio.h>

int length(long number);
int start_chars(long number);

//Main
int main (void)
{
    long number = get_long("Number: ");
    int length(long number);
    int start_chars(long number);
}

//Number length count
int length(long number)
{
    int len = 0;
    do
    {
        len ++;
        number /= 10;
    }
    while (number > 0);
    return len;
    printf("Length: %d", len);
}

//Number first characters
int start_chars(long number)
{
    long charsnum = number;
    while (charsnum >= 100)
    {
        charsnum /= 10;
    }
    return charsnum;
    printf("First 2 digits: %ld", charsnum);
}

//Length & character count congruity

//Checksum

Ответы [ 3 ]

1 голос
/ 30 марта 2020

Функция завершается сразу после оператора return.

Ваш оператор печати находится после оператора возврата в этих функциях. Вот почему они не появляются при запуске кода.

Итак, поместите их перед оператором return, и вы сможете увидеть их в выводе. Более того, для некоторого чистого вывода используйте \n внутри этих printf.

Затем, внутри вашей main функции, посмотрите на эти операторы:

int length(long number);
int start_chars(long number);

Это функции а не как функции вызываются в C. Сохраните возвращаемое значение в переменной. Поскольку вы просто хотите, чтобы эти операторы printf выполнялись, измените его на:

length(number);
start_chars(number);
0 голосов
/ 30 марта 2020

Как и ответы выше, вы допустили ошибку в своем коде, где вы печатаете после оператора возврата.

Вот правильный код:

# include <cs50.h>
# include <stdio.h>

int length(long number);
int start_chars(long number);

//Main
int main (void)
{
    long number = get_long("Number: ");
    int length(long number);
    int start_chars(long number);
}

//Number length count
int length(long number)
{
    int len = 0;
    do
    {
        len ++;
        number /= 10;
    }
    while (number > 0);
    printf("Length: %d", len);
    return len;
}

//Number first characters
int start_chars(long number)
{
    long charsnum = number;
    while (charsnum >= 100)
    {
        charsnum /= 10;
    }
    printf("First 2 digits: %ld", charsnum);
    return charsnum;
}

//Length & character count congruity

//Checksum
0 голосов
/ 30 марта 2020

когда вы используете return в своих функциях, они немедленно заканчиваются.

, поэтому ваша строка printf не будет выполнена.

printf должно быть раньше return.

...