Skip to content

Commit feecc22

Browse files
authored
Merge pull request #10 from DenisKolodich/KD_3.3
KD 3.3 мелкие правки
2 parents d242f94 + e5d4f33 commit feecc22

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

lang_c/3/3__vvod_dannyh_scanf/article.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -198,10 +198,10 @@ scanf("%f", &real_number);
198198
```
199199
200200
- для ввода `3.1415\n` сохранит в переменную `real_number` значение `3.1415`;
201-
- для ввода `-2.7182\n` сохраниет в переменную `real_number` значение `-2.7182`;
202-
- для ввода `.001\n` сохраниет в переменную `real_number` значение `0.001`;
203-
- для ввода `000123.456\n` сохраниет в переменную `real_number` значение `123.456`;
204-
- для ввода `+6.4321\n` сохраниет в переменную `real_number` значение `6.4321`;
201+
- для ввода `-2.7182\n` сохранит в переменную `real_number` значение `-2.7182`;
202+
- для ввода `.001\n` сохранит в переменную `real_number` значение `0.001`;
203+
- для ввода `000123.456\n` сохранит в переменную `real_number` значение `123.456`;
204+
- для ввода `+6.4321\n` сохранит в переменную `real_number` значение `6.4321`;
205205
206206
207207
Отдельно остановимся на работе спецификатора `%c`. Он используется для считывания одного **любого** символа (в том числе и любого пробельного символа) из потока ввода.
@@ -228,7 +228,7 @@ int main(void)
228228

229229
Для наглядности я добавил в вывод символы `|`. Результат работы программы для всех пяти случаев представлен на следующем рисунке:
230230

231-
![Рис.4 Запуск программы Листинг 5 на различных входных данных](./l5.png "Рис.4 Запуск программы Листинг 3 на различных входных данных")
231+
![Рис.4 Запуск программы Листинг 5 на различных входных данных](./l5.png "Рис.4 Запуск программы Листинг 5 на различных входных данных")
232232

233233
% **Важно!**
234234
При считывании данных по формату `%c` пробельные символы не игнорируются.
@@ -366,13 +366,13 @@ int main(void)
366366
scanf("%d %d", &a, &b, &c); // количество спецификаторов
367367
// не совпадает с количеством переменных
368368

369-
printf("%d\n", a + b c);
369+
printf("%d\n", a + b + c);
370370
371371
return 0;
372372
}
373373
```
374374
375-
Результат работа программы Листинг 8.
375+
Результат работы программы Листинг 8.
376376
![Рис.7 Ошибка! Несоответствие количества спецификаторов количеству переменных](./l8.png "Рис.7 Ошибка! Несоответствие количества спецификаторов количеству переменных")
377377
378378
@@ -415,7 +415,7 @@ int main(void)
415415

416416
![](./l9.png)
417417

418-
В первом случае в переменной `value_read` будет записано значение `2`, т.к. функцию `scanf` успешно считает оба значения и запишет их в соответствующие переменные. Во втором случае в переменной `value_read` будет хранится значение `1`, т.к. из-за несоответствия входных данных формат-строке функция `scanf` не сможет прочитать второе значение и в результате своей работы присвоит значение лишь одной переменной `a`.
418+
В первом случае в переменной `value_read` будет записано значение `2`, т.к. функция `scanf` успешно считает оба значения и запишет их в соответствующие переменные. Во втором случае в переменной `value_read` будет хранится значение `1`, т.к. из-за несоответствия входных данных формат-строке функция `scanf` не сможет прочитать второе значение и в результате своей работы присвоит значение лишь одной переменной `a`.
419419

420420
Далее в курсе (в шестом уроке), вы изучите особые конструкции языка Си, которые позволят вам в зависимости от того, сколько данных было считано, изменять поведение программы, например, выводить ошибку, если не получилось сохраннить введённые данные.
421421

lang_c/3/3__vvod_dannyh_scanf/reference.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ int main(void)
4949
5050
Но функция `scanf` -- это особый случай. Эта функция должна **записать** новое значение в вашу переменную. Копия тут не прокатит -- нужен доступ к оригиналу. Поэтому мы используем `&`. В этом случае функция получает не какую-то там жалкую копию, а информацию о том, где в памяти находится наша переменная, а потому может записать в неё введенное пользователем значение.
5151
52-
Логика в этом примерно следующая. Мы относимся к любым функциям как к потенциально опасным объектам, которые могут повредить данные. Поэтому по умолчанию функции получают только копии данных -- это защищает от случайных изменений. А чтобы позволить функции работать с оригинальными данными, мы должно совершить сознательное действие -- передать адрес переменной.
52+
Логика в этом примерно следующая. Мы относимся к любым функциям как к потенциально опасным объектам, которые могут повредить данные. Поэтому по умолчанию функции получают только копии данных -- это защищает от случайных изменений. А чтобы позволить функции работать с оригинальными данными, мы должны совершить сознательное действие -- передать адрес переменной.
5353
5454
Мы ещё подробнее обсудим этот механизм, когда будем изучать, как можно создавать собственные функции.
5555

0 commit comments

Comments
 (0)