![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| mclight |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 6.7.2005 Где: Baku, Azerbaijan Репутация: нет Всего: 2 |
я это сделал чтобы переводить было легче. --------------------
Как я решал подводные камни Cakephp и не только |
|||
|
||||
| LPBOY |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 12.7.2005 Репутация: 20 Всего: 20 |
Выводится "ошибка", потому что ты сам это выводишь. Функция chdir возвращает 0 в случае успешного завершения, поэтому инструкция if(!chdir(ent->d_name)) printf("ошибка"); выводит строку "ошибка" при каждом успешном завершении chdir. Логичней написать if(chdir(ent->d_name)) printf("ошибка"); Программа работает, но в некоторых местах можно немного улучшить. 1) строку if(ent->d_name[0]=='.' && (ent->d_name[1]==0 || (ent->d_name[1]=='.' && ent->d_name[2]==0)))continue; можешь спокойно заменить на if(ent->d_name[0]=='.') continue; Дело в том что если первый символ точка, то это в любом случае или "."(текущая папка) или ".."(предыдущая) делать дополнительные проверки на ноль и вторую точку незачем. Имя обычной папки не может начинаться с точки. 2) while((ent=readdir(d))!=NULL) это то же самое, что while(ent=readdir(d)) 3) строку 16 int i,a; замени на int i; ;) --------------------
Каждый человек по-своему прав, а по-моему нет... |
|||
|
||||
| mclight |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 6.7.2005 Где: Baku, Azerbaijan Репутация: нет Всего: 2 |
уй мля. у меня че-то совсем крыша поехала. вот что значит не спать по ночам. извините что потревожил Вас по пустякам.
3) ну это обычная опечатка. огромное Вам спасибо! Добавлено @ 05:21
выдает предупреждение. --------------------
Как я решал подводные камни Cakephp и не только |
|||
|
||||
| LPBOY |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 12.7.2005 Репутация: 20 Всего: 20 |
Какое предупреждение? --------------------
Каждый человек по-своему прав, а по-моему нет... |
|||
|
||||
| mclight |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 6.7.2005 Где: Baku, Azerbaijan Репутация: нет Всего: 2 |
не помню точно какое. я все же оставил прежний вариант. на всякий. вот а вообще спасибо. просто не было времени разбираться. код был скопирован с РНР. и соответственно при переводе на С++ были проблемы. а времени ужас как не было. так что огромное спасибо
! --------------------
Как я решал подводные камни Cakephp и не только |
|||
|
||||
| Ni@m |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 11.3.2004 Где: почти Киев Репутация: 0 Всего: 6 |
Поработав в с/с++ начинаешь терять ориентацию между реальностью и указателями. В общем указателями реализовывается массив. Единственнон удобство статического массива - что за тебя освобождает память компилятор. Это безусловно удобно. Но принцип действия - как и у указателя. Ну и конечно не надо забывать, что массива как типа нету. Нету типа array и тут не попишешь. Это не паскаль. Ведь --------------------
Обучение - как переливание воды из одной чашки в другую: всегда лучше, чтоб чашка со знаниями нахордилась выше. |
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Ni@m
Вообще говоря, тип массива есть. Но он сохраняется только в пределах видимости переменной. mclight На предупреждение можешь забить - в меру умный компилятор напоминает, что в условии можно сделать опечатку и написать "=" вместо "==". В данном случае все верно. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| LPBOY |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 12.7.2005 Репутация: 20 Всего: 20 |
Ничего подобного. Имеется стандартное преобразование имени массива в указатель на его первый элемент, но не надо путать массив и указатель - это совершенно разные типы.
Авторы Стандарта С++ считают по-другому: "8.3.4 In a declaration T D where D has the form D1 [constant-expression] and the type of the identifier in the declaration T D1 is "derived-declarator-type-list T", then the type of the identifier of D is an array type." Откомпилируй, например, такую программу:
Выдает false, кроме старых версий VC, у которых глюк по этому поводу. Это сообщение отредактировал(а) LPBOY - 4.8.2005, 11:49 --------------------
Каждый человек по-своему прав, а по-моему нет... |
||||||
|
|||||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
И еще -- readdir возвращает указатель на отведенную внутри нее память. Ты должен ее освобождать в конце каждого оборота цикла.
Это сообщение отредактировал(а) comcon1 - 4.8.2005, 11:57 |
|||
|
||||
| Ni@m |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 11.3.2004 Где: почти Киев Репутация: 0 Всего: 6 |
Мне кажется на уровне процессорных инструкций - тоже Дело в том, что компилятору можно отследить его размеры и своевременно освободить занимаемую им память, тем самым он проще в использовании.
Попрошу разьеснить что значит в пределах видимости переменной в данном случае. Ведь с указателем таже ситуация. Или я уже запутался --------------------
Обучение - как переливание воды из одной чашки в другую: всегда лучше, чтоб чашка со знаниями нахордилась выше. |
||||
|
|||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Это значит, что вне области видимости (например, при передаче в качестве параметра функции) тип T[N] неотличим от T*. Но в ее пределах это разные типы и даже массивы разного размера - разные типы. Например, специализации шаблона типом int[5] и int[10] различаются. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |