Страница 8 из 10

Re: язык C в Linux: вопросы начального уровня

Добавлено: 21 окт 2014, 20:03
Olej
Попалась мне на глаза очень славненькая книжица ... особенно для "начального уровня" ;-) :
С. В. Шапошникова, "Особенности языка С. Учебное пособие. Лаборатория юного линуксоида", май 2012.

Re: язык C в Linux: вопросы начального уровня

Добавлено: 30 мар 2015, 19:46
Olej
Olej писал(а):выпала необходимость выполнить небольшой учебный курс для пары-тройки учеников, по использованию C в Linux...
По учебным курсам, которые можно использовать в качестве самоучителей, обсуждение (перечисление) сложилось в другой теме: C / C++.

Смотрите там ... или сами вписывайте URL учебных ресурсов, которые оказались полезными.

Re: язык C в Linux: вопросы начального уровня

Добавлено: 12 дек 2015, 02:52
Olej
Задачи этой темы, а их тут много, будут подвергнуты новой ревизии в теме решебник задач C/C++.

Re: язык C в Linux: вопросы начального уровня

Добавлено: 05 янв 2016, 01:01
Гость
Всем привет!
Начал осваивать СИ.;)

Возник такой вопрос, вроде бы очень простой, но тем не менее для меня это оказалась на данный момент непосильная задача:) : реализовать на C три способа получения последнего символа в строке.
На perl могу много вариантов придумать.;). Здесь я смог дойти только до этого:

Код: Выделить всё

char * lastChar(char s[]){
    return s + strlen(s) - 1;	
}

Re: язык C в Linux: вопросы начального уровня

Добавлено: 05 янв 2016, 01:31
Olej
Гость писал(а):Всем привет!
Начал осваивать СИ.;)

Возник такой вопрос, вроде бы очень простой, но тем не менее для меня это оказалась на данный момент непосильная задача:) : реализовать на C три способа получения последнего символа в строке.
На perl могу много вариантов придумать.;). Здесь я смог дойти только до этого:

Код: Выделить всё

char * lastChar(char s[]){
    return s + strlen(s) - 1;	
}
1. для того, чтобы спрашивать и получать ответы проще и быстрее, Гость - зарегистрируйтесь и получите имя ... чтобы было кого цитировать...

2. от вас требуется получить символ, т.е. не char*, а char.

Код: Выделить всё

char lastChar(char s[]) {
    return *( s + strlen(s) - 1 );	
}
или

Код: Выделить всё

char lastChar(char s[]) {
    return s[ strlen(s) - 1 ];	
}
или

Код: Выделить всё

char lastChar(char s[]) {
    char *p = s;
    while( *++p ) {};
    return *( --p );	
}

Re: язык C в Linux: вопросы начального уровня

Добавлено: 05 янв 2016, 12:49
Vash
ОК. Спасибо.



Вам не кажется что 1й и 2й вариант по cути одно и тоже? Можно ли придумать еще один способ?

Re: язык C в Linux: вопросы начального уровня

Добавлено: 05 янв 2016, 13:30
Olej
Vash писал(а):Вам не кажется что 1й и 2й вариант по cути одно и тоже? Можно ли придумать еще один способ?
Собственно, и 3-й вариант "по cути одно и тоже" ;-) ... потому что функция strlen() ничего другого не делает, кроме как искать нулевой байт.
Строка символов C - это примитивный массив байт, заканчивающийся '\0', ничего там другого и придумать нельзя, задач то тривиальная: пробежать массив, найти ноль, выдернуть предшествующий байт...
Придумать ещё варианты наверняка можно ... но все они будут только синтаксически различающейся формой записи одного и того же.

P.S. Язык C не предназначался для обработки символьной информации (в отличие о того же Perl, или Python), или предназначалася только для самой примитивной обработки - поэтому в нём всё, что связано со строками, крайне упрощено.

P.P.S. Вот если вы в строку запишете русские символы (или китайские ... или арабские ...) то задача становится куда как веселее :lol:

Re: язык C в Linux: вопросы начального уровня

Добавлено: 05 янв 2016, 14:52
Olej
Гость писал(а):Начал осваивать СИ.;)
Я только-то (уже этим 2016-м годом ;-) ) собрал в единый текст + примеры кода - задачи по изучению программирования на C.
Вот здесь.

На сейчас (редакция 19) там 70 задач: от достаточно простых вопросов, до непростых задач, над которыми нужно изрядно посидеть...
Но все (даже простые вопросы) включены такие, которые имеют какую-то неочевидность, ... заковыку :lol: , которые требуют достаточно хорошего понимания того, о чём ведётся речь.
Причём, - это о современном C (стандарты C89, C99), который заметно отличается от описанного в K&R ... и во всех учебных курсах по C, которые списывались с K&R :lol:

Возможно, это поможет вам проще освоить C.

Re: язык C в Linux: вопросы начального уровня

Добавлено: 08 янв 2016, 00:40
Vash
Спасибо большое!:)

Re: язык C в Linux: вопросы начального уровня

Добавлено: 09 янв 2016, 06:15
Katerina
Доброго времени суток Всем
А скажите пожалуйста какой из этих способов предпочтительнее и почему? Я нашла такой пример. Отличие по времени выполнения(если компилировать без каких либо доп. ключей с учетом особенностей архитектуры процессора) практически на порядок.

Спасибо.