Страница 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. Вот если вы в строку запишете
русские символы (или китайские ... или арабские ...) то задача становится куда как веселее
Re: язык C в Linux: вопросы начального уровня
Добавлено: 05 янв 2016, 14:52
Olej
Гость писал(а):Начал осваивать СИ.;)
Я только-то (уже этим 2016-м годом
) собрал в единый текст + примеры кода - задачи по изучению программирования на C.
Вот
здесь.
На сейчас (редакция 19) там 70 задач: от достаточно простых вопросов, до непростых задач, над которыми нужно изрядно посидеть...
Но все (даже простые вопросы) включены такие, которые имеют какую-то неочевидность, ... заковыку
, которые требуют достаточно хорошего
понимания того, о чём ведётся речь.
Причём, - это о
современном C (стандарты C89, C99), который заметно отличается от описанного в K&R ... и во всех учебных курсах по C, которые списывались с K&R
Возможно, это поможет вам проще освоить C.
Re: язык C в Linux: вопросы начального уровня
Добавлено: 08 янв 2016, 00:40
Vash
Спасибо большое!:)
Re: язык C в Linux: вопросы начального уровня
Добавлено: 09 янв 2016, 06:15
Katerina
Доброго времени суток Всем
А скажите пожалуйста какой из этих способов предпочтительнее и почему? Я нашла
такой пример. Отличие по времени выполнения(если компилировать без каких либо доп. ключей с учетом особенностей архитектуры процессора) практически на порядок.
Спасибо.