Напишите программу, копирующую символы ввода в выходной поток и заменяющую стоящие подряд пробелы на один пробел.
$ vim space.c
#include <stdio.h>
int main(void)
{
int c;
while((c = getchar()) != EOF)
{
if (c == ' ')
{
putchar(c);
while((c = getchar()) == ' ')
putchar(0);
}
putchar(c);
}
return 0;
}
$ cc -g -O0 -Wall -o a.out space.c
$ ./a.out
Hello, my friend!
Hello, my friend!
Hello hello hello!
Hello hello hello!
Не работает!!!
ОтветитьУдалитьПолучилась такая конструкция, но почему-то ctrl-d не брейкает цикл, если он в цикле пропуска пробелов:
ОтветитьУдалить#include
/* копирование ввода на вывод */
int main(void)
{
int c;
while ((c = getchar()) != EOF)
{
if (c == ' ')
{
putchar(c);
while ((c = getchar()) == ' ')
;
}
if (c != EOF)
putchar(c);
else
break;
}
с отступами https://codeshare.io/21bqVB
ОтветитьУдалитьзачем ты писал эти строчки
Удалитьif (c != EOF)
putchar(c);
else
break;
}
ведь ты в начале поставил условие чтобы твой символ не был концом файла? потом заходишь в него , и внутри него опять ставишь условие на конец файла