язык C в Linux: вопросы начального уровня
Модератор: Olej
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: язык C в Linux: вопросы начального уровня
Попалась мне на глаза очень славненькая книжица ... особенно для "начального уровня" :
С. В. Шапошникова, "Особенности языка С. Учебное пособие. Лаборатория юного линуксоида", май 2012.
С. В. Шапошникова, "Особенности языка С. Учебное пособие. Лаборатория юного линуксоида", май 2012.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: язык C в Linux: вопросы начального уровня
По учебным курсам, которые можно использовать в качестве самоучителей, обсуждение (перечисление) сложилось в другой теме: C / C++.Olej писал(а):выпала необходимость выполнить небольшой учебный курс для пары-тройки учеников, по использованию C в Linux...
Смотрите там ... или сами вписывайте URL учебных ресурсов, которые оказались полезными.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: язык C в Linux: вопросы начального уровня
Задачи этой темы, а их тут много, будут подвергнуты новой ревизии в теме решебник задач C/C++.
Re: язык C в Linux: вопросы начального уровня
Всем привет!
Начал осваивать СИ.;)
Возник такой вопрос, вроде бы очень простой, но тем не менее для меня это оказалась на данный момент непосильная задача:) : реализовать на C три способа получения последнего символа в строке.
На perl могу много вариантов придумать.;). Здесь я смог дойти только до этого:
Начал осваивать СИ.;)
Возник такой вопрос, вроде бы очень простой, но тем не менее для меня это оказалась на данный момент непосильная задача:) : реализовать на C три способа получения последнего символа в строке.
На perl могу много вариантов придумать.;). Здесь я смог дойти только до этого:
Код: Выделить всё
char * lastChar(char s[]){
return s + strlen(s) - 1;
}
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: язык C в Linux: вопросы начального уровня
1. для того, чтобы спрашивать и получать ответы проще и быстрее, Гость - зарегистрируйтесь и получите имя ... чтобы было кого цитировать...Гость писал(а):Всем привет!
Начал осваивать СИ.;)
Возник такой вопрос, вроде бы очень простой, но тем не менее для меня это оказалась на данный момент непосильная задача:) : реализовать на C три способа получения последнего символа в строке.
На perl могу много вариантов придумать.;). Здесь я смог дойти только до этого:
Код: Выделить всё
char * lastChar(char s[]){ return s + strlen(s) - 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: вопросы начального уровня
ОК. Спасибо.
Вам не кажется что 1й и 2й вариант по cути одно и тоже? Можно ли придумать еще один способ?
Вам не кажется что 1й и 2й вариант по cути одно и тоже? Можно ли придумать еще один способ?
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: язык C в Linux: вопросы начального уровня
Собственно, и 3-й вариант "по cути одно и тоже" ... потому что функция strlen() ничего другого не делает, кроме как искать нулевой байт.Vash писал(а):Вам не кажется что 1й и 2й вариант по cути одно и тоже? Можно ли придумать еще один способ?
Строка символов C - это примитивный массив байт, заканчивающийся '\0', ничего там другого и придумать нельзя, задач то тривиальная: пробежать массив, найти ноль, выдернуть предшествующий байт...
Придумать ещё варианты наверняка можно ... но все они будут только синтаксически различающейся формой записи одного и того же.
P.S. Язык C не предназначался для обработки символьной информации (в отличие о того же Perl, или Python), или предназначалася только для самой примитивной обработки - поэтому в нём всё, что связано со строками, крайне упрощено.
P.P.S. Вот если вы в строку запишете русские символы (или китайские ... или арабские ...) то задача становится куда как веселее
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: язык C в Linux: вопросы начального уровня
Я только-то (уже этим 2016-м годом ) собрал в единый текст + примеры кода - задачи по изучению программирования на C.Гость писал(а):Начал осваивать СИ.;)
Вот здесь.
На сейчас (редакция 19) там 70 задач: от достаточно простых вопросов, до непростых задач, над которыми нужно изрядно посидеть...
Но все (даже простые вопросы) включены такие, которые имеют какую-то неочевидность, ... заковыку , которые требуют достаточно хорошего понимания того, о чём ведётся речь.
Причём, - это о современном C (стандарты C89, C99), который заметно отличается от описанного в K&R ... и во всех учебных курсах по C, которые списывались с K&R
Возможно, это поможет вам проще освоить C.
Re: язык C в Linux: вопросы начального уровня
Спасибо большое!:)
Re: язык C в Linux: вопросы начального уровня
Доброго времени суток Всем
А скажите пожалуйста какой из этих способов предпочтительнее и почему? Я нашла такой пример. Отличие по времени выполнения(если компилировать без каких либо доп. ключей с учетом особенностей архитектуры процессора) практически на порядок.
Спасибо.
А скажите пожалуйста какой из этих способов предпочтительнее и почему? Я нашла такой пример. Отличие по времени выполнения(если компилировать без каких либо доп. ключей с учетом особенностей архитектуры процессора) практически на порядок.
Спасибо.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей