Как в другой функции вывести значение из первой функции в Си
У меня есть функция которая требует: Массив с символами, конечный массив (пустой), и числовая переменная. В массиве с символами состоит слово, функция считывает посимвольно слово и удаляет одинаковые символы рядом (abbca -> abca), а числовая переменная считывает количество символов в конечном слове. В моём коде используются две таких функции и мне нужно сравнивать две конечные переменные, но при выводе их на экран, они равны нуль, а должны, сумме кол-ва символов.
void FuncKeyword(char array[], char highlighted_word[], int count) {
for(int index = 0; index < MAXOP && array[index] != 0; index++)
{
if (index > 0 && array[index] == array[index-1])
{
continue;
}
else
{
highlighted_word[count] = array[index];
count++;
}
}
printf("%d", count);
}
Мне нужно вывести на экран при помощи второго массива значение count из первого массива. Мне подсказали что это можно сделать при помощи поинтов, но я не знаю как, кто поможет?
Вот код что написан у меня:
void FuncKeyword(char array[], char highlighted_word[], int count) {
for(int index = 0; index < MAXOP && array[index] != 0; index++)
{
if (index > 0 && array[index] == array[index-1])
{
continue;
}
else
{
highlighted_word[count] = array[index];
count++;
}
}
printf("%d", count);
}
int main()
{
//scan_words();
char TEST_ARRAY[] = {"qweqq"};
char word1[MAXOP]
int index1 = 0;
FuncKeyword(TEST_ARRAY, word1, index1);
printf(" %d ", index1);
}
Я хочу получить из принта значение "5", но получаю значение "0".
Ответы (2 шт):
Вы передаёте аргумент index по значению, а не по ссылке, так что внутри функции получается копия значения извне, как бы локальная переменная, и снаружи про её изменения ничего не известно. Почитайте о передаче аргументов
Или передавайте по указателю (*
), (в C++ можно по ссылке &
), или, если это главный результат работы функции, сделайте её тип int
вместо void
, и возвращайте return-ом
Вот исправленный код:
void FuncKeyword(char array[], char highlighted_word[], int *countIndex) {
int count = 0;
for(int index = 0; index < MAXOP && array[index] != 0; index++)
{
if (index > 0 && array[index] == array[index-1])
{
continue;
}
else
{
highlighted_word[count] = array[index];
count++;
}
}
*countIndex = count;
}