Если вы хотите продолжить обработку чего-либо после того, как распечатали его, убедитесь, что переменная, в которой хранятся данные, остается в области видимости.
Возьмем, к примеру, такую функцию:
void sample_function (void) {
int data;
scanf("%d\n", &data);
printf("The input was: %d\n", data);
}
После распечатки значения data
с ним больше ничего не поделаешь. Вы достигаете конца функции, и когда функция возвращается, данные, которые находятся внутри области действия этой функции, освобождаются.
Эти данные можно использовать после того, как функция вернулась, но вам придется немного изменить свою технику. Одна из возможностей - сделать data
глобальной переменной вместо локальной переменной внутри функции. Вы также можете передать обратно значение data
, используя возвращаемое значение функции, или вы можете передать int*
функции и заставить функцию сохранять данные с использованием этого указателя. С помощью любого из этих методов вы сможете вызывать такую функцию, как sample_function
, и сохранять данные в области видимости после того, как функция вернулась.
Пока переменная, содержащая данные, не выходит из области видимости, у вас не должно быть проблем с повторным использованием ваших данных снова и снова. Печать / отображение данных не изменяет и не уничтожает их. Единственный способ потерять возможность повторного использования данных - это если переменная, содержащая данные, будет уничтожена (выйдя из области видимости или будучи free
г).
Из вашего описания трудно получить хорошее представление о том, о чем именно вы говорите. Можете ли вы привести пример (в коде) ситуации, о которой вы говорите?
Обновление:
Судя по вашим правкам, вы не совсем понимаете, что происходит. Когда вы печатаете данные на экране, вы не изменяете данные вообще. У вас все еще есть возможность изменять, получать доступ и повторно использовать данные так же, как и до их отображения. Вам не нужно ничего делать, чтобы снова использовать данные. Используя один из ваших примеров, допустим, у вас есть массив, который содержит последовательность чисел в последовательности Фибоначчи:
int sequence[100];
int i, sum;
fill_with_fibonacci_sequence(sequence); // or however else you get your initial data
// Print out the sequence
printf("The Fibonacci sequence is: ");
for (i=0; i<100; ++i) {
if ((i & 0x7) == 0)
printf("\n ");
printf("%i ", sequence[i]);
}
// Sum all of the even numbers from the sequence
sum = 0;
for (i=0; i<100; ++i) {
if ((sequence[i] & 0x1) == 0)
sum += sequence[i];
}
printf("The sum of the even numbers is: %i\n", sum);
Здесь мы печатаем каждое значение в массиве, затем оборачиваемся и повторно обрабатываем массив для суммирования четных членов. Распечатка массива не меняет сам массив, поэтому для повторного использования данных ничего делать не нужно.