@rikoover

(Си) Как заставить функцию вернуть строку из цикла?

Вот недавно начал изучать Си (работаю в VisualStudio 13)
Как мне поправить цикл чтобы промежуточные значения оно записывало в строку и функция возвращала готовую строку (или ...?). Возможно есть лучшее решение проблемы.

Забиваю в консоль 841, возвращает:
>Sum = 13 // OK
Я хочу чтобы возвращало:
>Sum = 8 + 4 + 1 = 13

#include <stdio.h>
#include <stdlib.h>

unsigned Sum(unsigned n); // Functions' prototype
void main() {
	unsigned n;
	printf_s("Please, print --> ");
	scanf_s("%u", &n);
	printf_s("Sum=%u\n", Sum(n));
	system("pause");
}

unsigned Sum(unsigned n) {
	unsigned s = 0; // iteration(s)
	while (n > 0) {
		s+= n % 10;
		n /= 10;
	}
	return s; 
}
  • Вопрос задан
  • 2736 просмотров
Решения вопроса 1
@CAMOKPYT
#include <stdio.h>
#include <stdlib.h>

void Sum(unsigned n); // Functions' prototype
void main() {
    unsigned n;
    printf_s("Please, print --> ");
    scanf_s("%u", &n);
    Sum(n);
    system("pause");
}

void Sum(unsigned n) {
    unsigned s = 0; // iteration(s)
    printf_s("Sum = ");
    while (n > 0) {
        printf("%d + ",n % 10);
        s+= n % 10;
        n /= 10;
    }
    printf_s("\b\b= %d\n",s);
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
Варианты
1) Передаете в функцию указатель на массив или на строку, и в этот массив на каждой итерации цикла пишете промежуточные значения
2) Заводите глобальную переменную, и функция пишет в нее - некошерно
3) Заводите структуру, в которой будет результат и промежуточные значения - ее заполняете и возвращаете (либо по указателю/ссылке делаете)
4) Вариации с массивом, но последнее число - результат.

Выбирайте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 21:53
30000 руб./за проект
23 нояб. 2024, в 21:49
1000 руб./в час
23 нояб. 2024, в 20:48
40000 руб./за проект