Другое > Программирование (любое)

Язык программирования С

(1/5) > >>

LanuHum:
Как мне свойственно, начну с негатива.
Советуют: "Учи С!"
А, как его учить?
Вот, будучи знакомым уже с Python, взялся разобраться с этим чудом С.
http://cpp.com.ru/kr_cbook/ch1kr.html#p16
Примеры не работают. Кто их пишет и нах, если они не работают?

--- Код ---
#include <stdio.h>

/* подсчет вводимых символов; 1-я версия */
main()
{
    long nc;
    nc = 0;

    while (getchar() != EOF)
        ++nc;
    printf(“%ld\n”, nc);
}

--- Конец кода ---
Не работает.

--- Код ---
#include <stdio.h>

/* подсчет цифр, символов-разделителей и прочих символов */
main()
{
    int с, i, nwhite, nother;
    int ndigit[10];

    nwhite = nother = 0;
    for (i = 0; i < 10, ++i)
        ndigit[i]= 0;

    while ((c = getchar()) != EOF)
        if (c >='0' && с <= '9')
            ++ndigit[c – '0'];
        else if (c == ' ' || c == '\n' || c == '\t')
            ++nwhite;
        else
            ++nother;

    printf("цифры =");
    for (i = 0; i < 10; ++i)
        printf("%d", ndigit[i]);
    printf(", символы-разделители =%d, прочие =%d\n", nwhite, nother);
}

--- Конец кода ---
Не работает. 25 строчек кода - 3 ошибки

--- Код ---
lesson_1.c:15:13: ошибка: в программе обнаружен некорректный символ «\200»
lesson_1.c:15:13: ошибка: в программе обнаружен некорректный символ «\223»
lesson_1.c:15:28: ошибка: expected «]» before '0'
             ++ndigit[c – '0'];
--- Конец кода ---
Подскажите мне, пожалуйста,где найти курс, в котором все примеры работают.

Striver:

--- Цитировать ---Вот, будучи знакомым уже с Python, взялся разобраться с этим чудом С.
--- Конец цитаты ---
Ох, вряд-ли это приведёт к чему-то хорошему...

Когда я 12 лет назад познакомился с Питоном, я забросил С++ как страшный сон, и с тех пор он мне не был нужен. С не такой кривой, как С++, но сложностей в нём тоже хватает.
С тех пор я так или иначе изучал Java, Sheme, D (D - классный язык, леплю на нём иногда по-мелочи), но вот к С возвращаться не хочется.


--- Цитировать ---/* подсчет вводимых символов; 1-я версия */
--- Конец цитаты ---
Скачал компилятор, скомпилил, вот вывод программы:

--- Код ---
D:\moe\prg\98-dmc>proba02
сысыфс
7
^C
D:\moe\prg\98-dmc>proba02 < aaa.txt
13

--- Конец кода ---
т.е. у меня программа работает.

LanuHum:

--- Цитата: Striver от 05 Декабрь 2015, 14:31:29 ---
--- Цитировать ---Вот, будучи знакомым уже с Python, взялся разобраться с этим чудом С.
--- Конец цитаты ---
Ох, вряд-ли это приведёт к чему-то хорошему...

Когда я 12 лет назад познакомился с Питоном, я забросил С++ как страшный сон, и с тех пор он мне не был нужен. С не такой кривой, как С++, но сложностей в нём тоже хватает.


--- Цитировать ---/* подсчет вводимых символов; 1-я версия */
--- Конец цитаты ---
Скачал компилятор, скомпилил, вот вывод программы:

--- Код ---
D:\moe\prg\98-dmc>proba02
сысыфс
7
^C
D:\moe\prg\98-dmc>proba02 < aaa.txt
13

--- Конец кода ---
т.е. у меня программа работает.

--- Конец цитаты ---
Дело ни в том, какой язык хорош для использования. Дело в том, что нужно научиться читать уже написанное разработчиками Блендера.
Так, у тебя работает, почему не работает тогда у меня? Потому что линукс? Где искать различия написания кода на С для разных осей?

Striver:

--- Цитировать ---Так, у тебя работает, почему не работает тогда у меня?
--- Конец цитаты ---
Вывод программы сюда скопируй.


--- Цитировать --- Потому что линукс? Где искать различия написания кода на С для разных осей?
--- Конец цитаты ---
В линуксе однозначно с С проще, чем винде, вряд-ли проблема из-за этого.

LanuHum:
Кстати, нашёл в интернете свой вопрос. У чела не получалось исполнить пример. Ему написали следующее:

--- Код ---
#include <stdio.h>
 
main()
{
int nc;
nc = 0;

while (getchar() != EOF)
{
++nc;
printf("%ld\n", nc);
}//без этой скобки в цикл входит только увеличение переменной nc, а функция printf
//выполнится только когда getchar() даст == -1;
}

--- Конец кода ---
Значит, проблема всё таки есть. Но, даже этот исправленный вариант даёт смутное представление.
Собираю этот код, запускаю, набираю текст, жму Enter

--- Код ---
фывук
1
2
3
4
5
6
7
8
9
10
11


--- Конец кода ---
Это что?

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии