Считать список, парные слова вывести в одну строку, а непарные в другую - 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;
}
Объяснение кода листинга программы
- Подключение стандартной библиотеки для работы с консолью (stdio.h).
- Установка константы N равной 256.
- Объявление трех массивов типа char: str, buf1, buf2 размером N.
- Объявление трех переменных типа int: i, j1, j2, которые будут использоваться в цикле.
- Считывание строки с помощью функции gets в массив str.
- Начальные значения j1 и j2 устанавливаются равными нулю.
- В цикле происходит проверка каждого символа строки str. Если символ нечетный, он добавляется в buf1, иначе в buf2.
- После прохода цикла, в buf1 и buf2 остаются только парные символы, которые выводятся на экран с помощью функции puts.
- Значения j1 и j2 сбрасываются в ноль.
- Вывод на экран массива buf2, содержащего нечетные символы.
- Выход из программы с возвращаемым значением 0.