Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
orionx64
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 43
1

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

28.11.2017, 22:48. Просмотров 300. Ответов 2
Метки нет (Все метки)

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <locale.h>
 
int main()
{
    char str[] = "The program is written in programming language C\0"; 
    int length = strlen(str); 
    char *word; 
 
    printf(" %s\n\n", str); 
    word = strtok(str, " ,.!");
 
    for (int i = 1; word != NULL; i++) 
    {
        printf(" %s - %d\n", word, strlen(word));
        word = strtok(NULL, " ,.!");
    }
 
    return 0;
}
объясните код начиная с 13-той строчки
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2017, 22:48
Ответы с готовыми решениями:

Объясните фрагмент кода
У нас есть матрица 4х4 мы делаем поворот на 90 градусов влево Объясните как работает код p = N...

Поясните фрагмент кода
Всем привет! Мой вопрос достаточно странный, но ответ на него я нигде не нашел, итак как правильно...

Что делает приведенный фрагмент кода
Что делает следующий фрагмент кода и почему? void foo(void) { unsigned int a = 6; int b...

Преобразовать фрагмент кода с использованием switch
Подскажите пожалуйста, как фрагмент данного кода записать с использованием switch? Только начал...

Что выведет на консоль следующий фрагмент кода
$11. Что выведет на консоль следующий фрагмент кода: (обоснуйте ответ) unsigned char a = 255;...

2
stake-k26
620 / 434 / 332
Регистрация: 25.04.2016
Сообщений: 1,226
28.11.2017, 23:11 2
Тут и объяснять не чего. Википедия.
1
Байт
Эксперт C
20340 / 12892 / 2701
Регистрация: 24.12.2010
Сообщений: 26,958
29.11.2017, 11:27 3
orionx64, Что делает переменная i в цикле - не понятно. Заголовок лучше было бы записать так
C
1
2
3
for ( ; word != NULL; ) 
  // или
while(word != NULL)
Но это не ошибка, просто замечания по стилю...
А хитрая функция strtok делает следующее.
Если ей первым аргументом передается что-то (не NULL), она ищет первое вхождение одного из символов второго аргумента (в вашем случае - знака препинания). Не находит - возвращает NULL. А коли нашла, ставит на это место терминальный 0 (портит входную строку), свой внутренний указатель устанавливает на следующий символ, а возвращает указатель на переданную в первом аргументе строку. Это кажется странным, пока мы не обратимся ко второму режиму ее работы, когда первый аргумент - NULL. Тогда она вместо этого первого аргумента использует этот свой внутренний указатель. И делает все тоже самое.
В итоге вы получаете строку, разбитую терминальными нулями на слова.
Пишу так подробно, ибо подзабыл, как она работает, эта хитрая бестия. А самый лучший способ усвоить материал, это рассказать его своими словами. Причем не так уж важно кому - учителю, или ученику. Имхо, ученику даже предпочтительнее...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2017, 11:27

Объясните часть кода
Всем привет, не понимаю до конца часть кода(???). Постарайтесь,пожалуйста, объяснить на доступном...

Объясните строку кода
Вот эту строчку объясните : if((src!=' ')||((src==' ')&amp;&amp;(src!=' '))){ #include &lt;stdio.h&gt; ...

Объясните работу кода
Вот прога для записи номера числа в последовательности Фибоначчи. Вопрос в том, что я не могу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru