2017-02-15 24 views
1

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

#include <stdio.h> 
#include <string.h> 

void reverse(char[], long, long); 
int main() 
{ 
    char str[50]; 
    int i, j, k, cnt = 0; 
    long size; 

    printf("Enter: "); 
    scanf("%s", str); 

    size = strlen(str); 
    reverse(str, 0, size - 1); 
    printf(str); 
    return 0; 
} 

void reverse(char str[], long index, long size) 
{ 
    char temp; 
    temp = str[index]; 
    str[index] = str[size - index]; 
    str[size - index] = temp; 
    if (index == size/2) 
    { 
     return; 
    } 
    reverse(str, index + 1, size); 
} 

Извините за настолько неопределенны, выход образца от входа 1234567 будет 2357, то этот выход в обратном 7532.

+1

Не могли бы вы объяснить немного больше вашей проблемы? В функции 'main' вы не меняете' str', поэтому в 'reverse' вы работаете с оригинальной' str'. – Marievi

+2

Не могли бы вы привести пример ввода и вывод, который вы ожидаете? Я не совсем понимаю, что вы пытаетесь выполнить. –

+1

* 'исключает неперфорированные позиции, а затем резервирует выходные данные *. Что вы подразумеваете под * непервыми позициями *? Возможно опечатка для: * re ** v ** er ** s ** e выход *? – Wolf

ответ

5

Вот что делает ваш код (как написано прямо сейчас):

  1. Введите строку с консоли
  2. Распечатайте каждый символ, который находится в «основной позиции» (2, 3, 5, 7 и т.д.) без изменения строки
  3. обратного оригинального, неизмененного строку
  4. распечатать обращенную строку

Это звучит для меня, что то, что вы ищете следующее:
Когда вы «исключить символы из строки» вы создаете новую строку что вы заселить с символами из строки ввода, которые находятся в не -значные позиции. Чем вы используете эту измененную строку в качестве параметра в функции reverse().

Я не сомневаюсь, что, если вы поймете приведенный выше параграф, у вас не будет проблем с исправлением кода.

Вот шаги, чтобы достичь того, что вам нужно:

  1. входной строки в str (как вы в настоящее время делают)
  2. ввести новую строкуstr2 одного и того же размера 50 как исходной строки
  3. в вашем цикле копировать каждый символ от str до str2, который не находится в «исходном положении»
  4. звонок reverse(), при условии, что он является str2 как параметр, а не (текущий) str
+1

Это именно то, что я делаю «да», но борюсь с тем, как передавать входные данные. Я знаю, что, вероятно, это так глупо, что я тоже ошибаюсь. –

+2

@Ijustwanttolearn. поскольку он сказал, что вы делаете фильтр и печатаете его, но никогда не сохраняете его в массиве. Просто создайте новый массив и подайте в него фильтрованные символы, затем передайте новый массив «reverse». –

+0

Хороший анализ. Но честно: вы видите какой-то смысл? – Wolf

 Смежные вопросы

  • Нет связанных вопросов^_^