Следующий код предназначен для замены нескольких последовательных пробелов на 1 пробел. Хотя мне это удается, я запутался в использовании фигурных скобок.C программирование - путаница относительно фигурных скобок
Это одна на самом деле работает отлично:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ch, lastch;
lastch = 'a';
while((ch = getchar())!= EOF)
{
if(ch == ' ')
{
if (lastch != ' ')
putchar(ch);
}
else
putchar(ch);
lastch = ch;
}
}
Но я не могу понять, почему это не является, лишь поставив фигурные скобки во внутреннем цикле и другое заявление:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ch, lastch;
lastch = 'a';
while((ch = getchar())!= EOF)
{
if(ch == ' ')
{
if (lastch != ' ')
{
putchar(ch);
}
}
else
{
putchar(ch);
lastch = ch;
}
}
}
Могу ли я не заключить петлю в петлю с фигурными фигурными скобками? Я читал, что вторая - хорошая практика сделать ее читаемой, но что я делаю неправильно?
В обеих ветвях 'then' и' else' оператора if содержится не более одного оператора. Итак, если вы не окружаете утверждения в фигурных скобках, тогда в ветке 'else' будет выполняться только первый' putchar() '. –