Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/86: Рейтинг темы: голосов - 86, средняя оценка - 4.97
5 / 5 / 0
Регистрация: 23.07.2013
Сообщений: 112
1

Применение команды char

06.08.2013, 00:11. Показов 15682. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я несколько раз встречал такую команду как char но так и не понял зачем она, только одно понял, что она применяется для внесения переменных, но для каких я тоже не понял.
Вот где я ее встречал:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
 * Программа для оценивания важности карт.
 * Выпущено под публичной Лас-Вегасской лицензией.
 * (с)2014 Команда коледжа по блек-джеку.
 */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    char card_name[3];
    puts("Enter the name of the map: ");
    scanf("%2s", card_name);
    int val = 0;
    if (card_name[0] == 'K') {
        val = 10;
    } else if (card_name[0] == 'Q') {
        val = 10;
    } else if (card_name[0] == 'J') {
        val = 10;
    } else if (card_name[0] == 'A') {
        val = 11;
    } else {
        val = atoi(card_name);
    }
    printf("Value cards: %i\n", val);
    return 0;
}
Также в разных "модификациях" этой программы:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/*
 * Программа для оценивания важности карт.
 * Выпущено под публичной Лас-Вегасской лицензией.
 * (с)2014 Команда коледжа по блек-джеку.
 */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    char card_name[3];
    puts("Enter the name of the map: ");
    scanf("%2s", card_name);
    int val = 0;
    if (card_name[0] == 'K') {
        val = 10;
    } else if (card_name[0] == 'Q') {
        val = 10;
    } else if (card_name[0] == 'J') {
        val = 10;
    } else if (card_name[0] == 'A') {
        val = 11;
    } else {
        val = atoi(card_name);
    }
    if ((val > 2) && (val < 7))
        puts ("Counter increased");
    else if (val == 10, 11)
        puts ("The counter is decremented");
    system("PAUSE");
    return 0;
}
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/*
 * Программа для оценивания важности карт.
 * Выпущено под публичной Лас-Вегасской лицензией.
 * (с)2014 Команда коледжа по блек-джеку.
 */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    char card_name[3];
    puts("Enter the name of the map: ");
    scanf("%2s", card_name);
    int val = 0;
    switch(card_name[0]) {
        case 'K':
        case 'Q':
        case 'J':
          val = 10;
          break;
        case'A':
          val = 11;
          break;
        default:
          val = atoi(card_name);
    }
    if ((val > 2) && (val < 7))
        puts ("Counter increased");
    else if (val == 10, 11)
        puts ("The counter is decremented");
    system("PAUSE");
    return 0;
}
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*
 * Программа для оценивания важности карт.
 * Выпущено под публичной Лас-Вегасской лицензией.
 * (с)2014 Команда коледжа по блек-джеку.
 */
#include <stdio.h>
#include <stdlib.h>
int main()
{
    char card_name[3];
    int count = 0;
    while (card_name[0] != 'X') {
        puts("Enter the name of the map: ");
        scanf("%2s", card_name);
        int val = 0;
        switch(card_name[0]) {
        case 'K':
        case 'Q':
        case 'J':
          val = 10;
          break;
        case 'A':
          val = 11;
          break;
        case 'X':
          continue;
        default:
          val = atoi(card_name);
          if ((val < 1) || (val > 10)) {
              puts("I do not understand is the difference!");
              continue;
          }           
        }
        if ((val > 2) && (val < 7)) {
            count++;
        } else if (val == 10) {
            count--;
        }
        printf("Current: %i\n", count);
    }
    system("PAUSE");
    return 0;
}
Можете пожалуйста разъяснить зачем она используется (желательно примитивно)))
Спасибо за внимание

Добавлено через 6 минут
Программы писал по учебнику но там не было указанно назначение команды char, а сам как жаль не додумался
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.08.2013, 00:11
Ответы с готовыми решениями:

CONST_RETURN char *__cdecl strstr (const char *_Str, const char *_SubStr)
#include &lt;stdio.h&gt; #include &lt;string.h&gt; char tracks = { &quot;ya ostavil svoe serdce v harvardskom...

Assigning from int to char[10] from char to char[10]
добрый день, подскажите пожалуйста, в карточной колоде 52 карты, у меня есть массив структур где ...

Переход с 10 на 17 Студию 2440 =: невозможно преобразовать "const char [2] в char*
Доброго Нового года! Через пару дней сдавать контрольную работу, которую сделал ещё вначале...

Ошибка в коде: несовместимы типы операндов (char и const char)
Текст не содержит знаков препинания и набран одинаковым шрифтом. Составить программу определения...

10
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
06.08.2013, 01:14 2
Эм... , char - не команда. Это тип, целочисленный. Используется в основном для хранения символов ('a', 'd' и т.д.). Массив символов в C - это строка. В приведенных листингах объявляется именно массив символов, хотя используется только один из них.
1
5 / 5 / 0
Регистрация: 23.07.2013
Сообщений: 112
06.08.2013, 01:24  [ТС] 3
Это очень похоже на команду int и я несколько не понял между ними разницы.

Добавлено через 3 минуты
Как знаю int еще может давать значение переменой, а вот "команда" char может, или она просто вводит массив в программу который потом может использоватся?

Добавлено через 3 минуты
Вот на этом примере можешь пожалуйста сказать зачем char вписывается:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
    char card_name[3];
    puts("Enter the name of the map: ");
    scanf("%2s", card_name);
    int val = 0;
    if (card_name[0] == 'K') {
        val = 10;
    } else if (card_name[0] == 'Q') {
        val = 10;
    } else if (card_name[0] == 'J') {
        val = 10;
    } else if (card_name[0] == 'A') {
        val = 11;
    } else {
        val = atoi(card_name);
    }
    printf("Value cards: %i\n", val);
    return 0;
}
За это большое спасибо
0
213 / 202 / 85
Регистрация: 09.05.2012
Сообщений: 494
06.08.2013, 01:40 4
почитайте о типах данных(простых типах и масивах) в си.
char - это такой же целочисельный тип данных как и int. разница лишь в том, что переменная типа int - это 4 байта(правда не всегда), а char - 1 байт. то есть разница в диапазонах возможных значний.
как было сказано выше char в основном используется для хранения символов(а точнее их кодов).
масив "вводится" в программу посредством специального обьяления переменной. int x[], char s[] - это два массива. в первом случае все элементы имеют тип int, во втором - char
не обязательно, но массив типа char можно считать строкой, если в таком массиве есть символ '\0'.(сим. с кодом 0)
в общем возьмитесь за книгу и попробуйте почитать, о типах данных, в часности простых типах, масивах и строках.

Добавлено через 5 минут
Цитата Сообщение от Yamakasi009 Посмотреть сообщение
Вот на этом примере можешь пожалуйста сказать зачем char вписывается:
char card_name[3]; обьявили массив на 3 элемента типа char(символ)
scanf("%2s", card_name); - производит чтение строки со стандартного потока ввода(консоли, терминала, командной строки или чего бы то ни было) размером в 2 символа в буфер(в данном случае массив символов) card_name. однако, функция scanf помимо двух считаных символов, поместит в буфер еще и символ '\0' дабы сделать это "настоящей" строкой.
дальше с помощью блока взаимоисключающих условий проверяется первый(индекс 0) символ в этой строке(card_name).
1
5 / 5 / 0
Регистрация: 23.07.2013
Сообщений: 112
06.08.2013, 11:45  [ТС] 5
Цитата Сообщение от lowercase Посмотреть сообщение
что переменная типа int - это 4 байта(правда не всегда)
Это обычно зависит от ОС и еще от x64 или x36 битная система.
Цитата Сообщение от lowercase Посмотреть сообщение
в общем возьмитесь за книгу и попробуйте почитать, о типах данных, в часности простых типах, масивах и строках.
Я как раз читаю книгу про программирование и там что то не очень подробно объяснили, как жаль, но про массивы там есть.
Цитата Сообщение от lowercase Посмотреть сообщение
scanf("%2s", card_name);
С этой командой я разобрался.
Цитата Сообщение от lowercase Посмотреть сообщение
поместит в буфер еще и символ '\0'
Про то что Си всегда в конце строки ставит \0 я знаю, и еще про то что он не читает по строкам а читает по буквам но за это спасибо что всегда подмечал
Цитата Сообщение от lowercase Посмотреть сообщение
char card_name[3]; обьявили массив на 3 элемента типа char(символ)
Можешь пожалуйста чуть по подробние написать почему три и что оно дает.
C
1
2
3
4
5
6
7
8
9
10
11
if (card_name[0] == 'K') {
        val = 10;
    } else if (card_name[0] == 'Q') {
        val = 10;
    } else if (card_name[0] == 'J') {
        val = 10;
    } else if (card_name[0] == 'A') {
        val = 11;
    } else {
        val = atoi(card_name);
    }
И еще, можешь пожалуйста объяснить почему тут ставится ноль.
За это большое спасибо , а также за внимание
0
81 / 81 / 33
Регистрация: 03.03.2013
Сообщений: 311
06.08.2013, 23:34 6
lowercase, Fyret, да что вы объясняете, по-моему здесь очевидно, что парень книжку в картинках рассматривает, ну в крайнем случае взял какую то не для начинающих. Yamakasi009, напишите, какую книгу хоть взяли, может Вам что-то более подходящее предложат.
0
5 / 5 / 0
Регистрация: 23.07.2013
Сообщений: 112
06.08.2013, 23:52  [ТС] 7
Я брал книжку в руки и уж точно не по картинкам ее смотрел, книжка называется "Изучаем программирование на C". Писатели: Дэвид Гриффитс; Дон Гриффитс.
Просто я так по "тупому" спрашывал потому что спишил и немножко не вник в слова и еще не совсем понял некоторые моменты, вот и все.

Добавлено через 2 минуты
Я не понял почему все таки три а не пять например.
0
19 / 19 / 7
Регистрация: 17.05.2013
Сообщений: 72
07.08.2013, 00:14 8
однозначно не советую ТС'у IDE, в которой транслятор работает с исходным кодом, написанном на русскоязычном синтаксисе..
0
5 / 5 / 0
Регистрация: 23.07.2013
Сообщений: 112
07.08.2013, 11:27  [ТС] 9
Окей.
Так все таки вернемся к главной теме: почему именно три а не пять например???
0
81 / 81 / 33
Регистрация: 03.03.2013
Сообщений: 311
07.08.2013, 11:33 10
Цитата Сообщение от Yamakasi009 Посмотреть сообщение
Окей.
Так все таки вернемся к главной теме: почему именно три а не пять например???
Если Вы не ошиблись в этой
C
1
scanf("%2s", card_name);
и этой
C
1
char card_name[3];
строках.
0
5 / 5 / 0
Регистрация: 23.07.2013
Сообщений: 112
07.08.2013, 11:36  [ТС] 11
Я использую MinGW.

Добавлено через 1 минуту
Значит scanf должно бытьт равно char card_name и наоборот???
0
07.08.2013, 11:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.08.2013, 11:36
Помогаю со студенческими работами здесь

Error C2440: =: невозможно преобразовать 'char (*)[150]' в 'char *'
Есть следующая задача. Написать программу, которая запрашивает количество родственников в семье, а...

Const char нельзя присвоить сущность типа char
Здравствуйте! Начинаю изучать Си И вот у меня немного не получается написать свою первую...

Тип signed char и unsigned char
Есть путаница в типах данных в Си signed char и unsigned char. Если объявить переменную следующим...

Чем char отличается от unsigned char?
я наверно тупая,но понять этого не могу.помогите,пожалуйста спасибо


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru