Примеры отдельных (базовых) фрагментов на языке Си (С) , полезные для понимания особенностей языка.

Forums:

Доброго времени дня или ночи)
В теме я размещу некоторые полезные процедуры или фрагменты таковых, которые будут полезны для понимая языка (ни в коем случае не считайте их за стандарты кодирования! это скорее просто чтобы разобраться с особенностями некоторых функций и структур)

vedro-compota's picture

=Чем и в чём)=
Итак, давайте прочитаем строку из консоли - насущная проблема для тех, кто начинает изучать язык си.
для начала ознакомьтесь -

Функция scanf = http://lord-n.narod.ru/download/books/wa...

-----------------------

_____________
матфак вгу и остальная классика =)

про указатели забыл ты . можно даже там же = http://lord-n.narod.ru/download/books/wa...

+это я+

vedro-compota's picture

да, друзья , сначала надо прочитать про указатели) но продолжаем.

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

итак. чтобы считать строку из консоли до первого пробела используйте следующий блок команд =

printf("\nPlease specify the input string \n"); /* просим пользователя ввести в окно консоли строку*/
  scanf("%s", inputstr); /* читаем данные из потока вводу в нашу переменную*/
  printf("\n You've specified string = %s\n", inputstr); /* просим пользователя ввести в окно консоли строку*/

но данный пример не очень хорош для считывания, так как во-первы придётся постараться , указывая формат, чтобы считать все символы строки,а во-вторых это не рационально (читаем - http://cboard.cprogramming.com/c-program...)
поэтому логичнее использовать вариант =

/* читаем строку практически произвольной длинны */
#include <limits.h>/*описание костант режима выполнения программы */
main {
    fgets ( str, LINE_MAX , stdin ); /* LINE_MAX - хранит максимальный размер входной строки*/
}

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

printf() вывод на экран целого числа =

printf("\n Yout string length with the \"new line character\" = <strong>%u</strong>\n", n);

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

если мы работаем с турбо си, то стандартная комплектация не позволит использовать

/* почему fgets читает только n-1 символов  - то есть не работает с параметром  = fgets (buf ,1, stdin) */
#include <stdio.h> /* определение стандартной библиотеки ввода-вывода для си http://ru.wikipedia.org/wiki/Stdio.h */
#include <alloc.h>/*  не обязательно для данного примера - можно удалить*/
#include <stdlib.h>
#include <limits.h>/*описание костант режима выполнения программы - в турбо си не содержит LINE_MAX , а потому здесь не обязателена  */
/* пояснения в консоли - английские (мой турбо си не располагает необходимой кодировкой))*/
/* стандартноименованная функция, которая является точкой входа в программу */
 main()
{ 
  char a='';  /* вспомогательная переменная*/
  char * ch;  /*вспомогательная переменная */
  char * inputstr; /* в область памяти, на которую указывает эта переменная мы и будем сохранять строку.-  тип данной переменной 
                   - это указатель на символ(строка пишется посимвольно - видимо, из подобных соображений.)*/

  printf("\nPlease specify the input string \n"); /* просим пользователя ввести в окно консоли строку*/
  fgets ( inputstr, 20 , stdin ); /* LINE_MAX - хранит максимальный размер входной строки , но не явялется не входит стандарт #include <limits.h> для турбо си */
                                     /* scanf("%s", inputstr); читаем данные из потока вводу в нашу переменную*/
  printf("\n You've specified string = %s\n", inputstr); /* просим пользователя ввести в окно консоли строку*/
 
 /* выполняем следующие две команды чтобы задержать закрытие консоли после выполнения предыдущего кода - первая считает из стандартного
 потока ввода(консоли) enter который мы нажали, после того, как ввели строку в начале, а вторая команда как раз и будет ожидать повторного нажатия enter, 
 после чего консоль будет закрыта.*/
 getchar();
 getchar();
 
}

_____________
матфак вгу и остальная классика =)