Считать список, парные слова вывести в одну строку, а непарные в другую - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста, написал такой вот код, нужно считать список, и парные слова вывести в одной строке, а непарные в другой. Программа после запуска сразу же вылетает, уже не знаю что делать. Пишу на С.
#include <stdio.h>
#include <stdlib.h>
#define N 256
int main()
{
    char str[255], buf1[N], buf2[N], *odd, *even, *start;
    int flag = 0;
 
    printf("vvedite");
    scanf("%s", str);
    start = str;
    odd = buf1;
    even = buf2;
    while (*start) 
    {
        if (!flag) 
        {
            while (*start != ' ' && *start)
                *odd++ = *start++;
            if (*start) 
            {
                *odd++ = ' ';
                start++;
                flag = 1;
            }
        }
        else 
        {
            while (*start != ' ' && *start)
                *even++ = *start++;
            if (*start) 
            {
                *even++ = ' ';
                start++;
                flag = 0;
            }
        }
    }
    *odd = '\0';
    *even = '\0';
    puts(buf1);
    puts(buf2);
    //printf(buf1);
    //printf(buf2);
    return 0;
}

Решение задачи: «Считать список, парные слова вывести в одну строку, а непарные в другую»

textual
Листинг программы
#include <stdio.h>
#define N 256
int main()
{
    char str[N], buf1[N],buf2[N];
    int i,j1=0,j2=0;
    gets(str);
    for(i=0;str[i];i++)
       if(str[i]%2)
          buf1[j1++]=str[i];
       else
          buf2[j2++]=str[i];
   buf1[j1]=0;
   buf2[j2]=0;
   puts(buf1);
   puts(buf2);
   return 0;
}

Объяснение кода листинга программы

  1. Подключение стандартной библиотеки для работы с консолью (stdio.h).
  2. Установка константы N равной 256.
  3. Объявление трех массивов типа char: str, buf1, buf2 размером N.
  4. Объявление трех переменных типа int: i, j1, j2, которые будут использоваться в цикле.
  5. Считывание строки с помощью функции gets в массив str.
  6. Начальные значения j1 и j2 устанавливаются равными нулю.
  7. В цикле происходит проверка каждого символа строки str. Если символ нечетный, он добавляется в buf1, иначе в buf2.
  8. После прохода цикла, в buf1 и buf2 остаются только парные символы, которые выводятся на экран с помощью функции puts.
  9. Значения j1 и j2 сбрасываются в ноль.
  10. Вывод на экран массива buf2, содержащего нечетные символы.
  11. Выход из программы с возвращаемым значением 0.

Оцени полезность:

6   голосов , оценка 4.333 из 5
Похожие ответы