Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Linux для начинающих

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.01.2013, 22:23   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,348
Вес репутации: 9547
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Учимся программированию на Си в Linux

Сам только начал изучать СИ
Здесь я буду выкладывать короткие примеры кода на Си

Для компиляции кода достаточно в консоли набрать
gcc MyCode.c
Компилятор создаст на выходе бинарный фаил a.out, который вы можете запустить и посмотреть его работу

Запускаем скомпилированый фаил:
./a.out

Можно указать компилятору имя выходного файла:
gcc -o MyBinFile MyCode.c
Admin на форуме   Ответить с цитированием
Старый 10.01.2013, 22:25   #2
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,348
Вес репутации: 9547
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Пример ожидания ввода с клавиатуры и вывод в терминал
PHP код:
#include <stdio.h>

main () 
{
 
char ch//обьявляем переменную типа char
 
while ((ch getchar()) != EOF//ждем в цикле ввода с клавы, прервать Ctrl^C
 
putchar(ch);//отобразить введенные символы

Admin на форуме   Ответить с цитированием
Старый 10.01.2013, 22:30   #3
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,348
Вес репутации: 9547
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

В языке C отсутствует специальный строковый тип данных. Строка представляет собой последовательность (одномерный массив) из одного или более символов, последним из которых является нулевой символ таблицы ASCII '\0'. Это единственный вид строки, определенный в C.

Язык C поддерживает строковые константы, называемые строковыми литералами. Строковый литерал – это любая последовательность символов, заключенная в двойные кавычки ("…"). В конце литерала компилятор автоматически добавляет нулевой символ.

Не следует путать понятия строки и символа. Символьная константа заключается в одинарные кавычки, а строковая – в двойные.

Например, 'c' – символьная константа, а "c" – строковая константа.

Литерал можно задать с помощью директивы препроцессора define:

# define STR "…"

Строковая переменная может быть сформирована как одномерный массив типа char либо с помощью указателя на переменную типа char. Количество символов в массиве (объем выделяемой памяти) должно быть не меньше, чем количество символов в строке плюс один символ для хранения символа ноль.
Пример
PHP код:
#include <stdio.h>
typedef char *string;
 
int main(void)
{
  
string strs[5];  // Массив строк
  
int i;
 
  
strs[0] = "first string";
  
strs[1] = "second string";
  
strs[2] = "third string";
  
strs[3] = "this is the fourth string";
  
strs[4] = "and finally this is the fifth string";
 
  for(
05; ++iputs(strs[i]);    //вывод строк из массива в консоль 

  
return 0;

Admin на форуме   Ответить с цитированием
Старый 11.01.2013, 07:35   #4
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1599
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию

можно так:
Код:
#include <stdio.h>

char * strs[]= {"1 string", "2 string", "3 string","4 string","5 string"};
 
int main(void)
{
  int i;
  for(i = 0; i < 5; ++i) {
        puts(strs[i]);
        }
  return 0;
}
andr128 вне форума   Ответить с цитированием
Старый 11.01.2013, 08:12   #5
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1599
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию

Немного усложним, добавим несколько операторов для вычисления кол-ва элементов в массиве. Удобно - не нужно указывать в цикле цыфру кол-ва элементов:
PHP код:
#include <stdio.h>

// сразу создадим массив с указателями и заполним его
char strs[]= {"Vasili""Diana""Nikola""Andrey""Maksimka""Alexandr"};
 
int main(void)
{
  
printf("Byte one element:      %d\n"sizeof(strs[0])); //сколько байт занимает один элемент массива
  
printf("Bytes all massive:     %d\n"sizeof(strs));    //весь массив
  
int n sizeof(strs) / sizeof(strs[0]);             //вычисление элементов в массиве
  
printf("Elements into massive: %d\n\n"n);           //весь массив

  
int i;
  for(
0n; ++i) { 
        
printf("Element %d = %s\n"istrs[i]);
        }
  return 
0;

andr128 вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 15:21. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика