![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
void Tf::mo(char m[30])
{ char fname[30] = "text.txt\0"; FILE *in; if((in = fopen(fname, "rt")) == NULL) { return; } char name[30]; while(!feof(in)){ fscanf(in, "%s %d %d", &name, &yd, &la); if(m == name){ fclose(in); return; }; } fclose(in); } Нужно чтоб он сравнил m c name и вышел из функции а он не сравнивает! так и продолжает цыкл до конца файла. Как сделать чтоб он смог найти нужное и выйти,? |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
m и name у тебя объявлены как массивы char, поэтому поэтому выражение вида m означат ссылку на первый элемент массива. Поэтому сравниваются не строки, а значения ссылок.
|
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: нет Всего: 16 |
Дополнение к предидушему
if(m == name) нужно заменить на if(strcmp(m, name) == 0 ) |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Кроме того, так для общего развития, строка в кавычках уже подрузумевает ноль в конце и если содержимое массива fname - константа, то можно и даже нужно писать fname[] = "text.txt", а если не константа, то сначала описывают массив, а потом копируют в него значения (char fname[30]; strcpy(fname, "text.txt");)
return не надо заключать в {}. |
|||
|
||||
| DENNN |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Это стиль программирования, а не обязательное требование. К вопросу не относится |
||||
|
|||||
| HexoGenus |
|
|||
![]() Шустрый ![]() Профиль Группа: Экс. модератор Сообщений: 110 Регистрация: 28.8.2002 Где: Ростов-на-Дону Репутация: нет Всего: нет |
char fname[30] = "text.txt\0";
Это не стиль программирования а излишний код char fname[30] = "text.txt"; и почему 30? от балды? если размер не меняется то как сказал RAN лучше char fname[] = "text.txt"; или потом возможно содержимое fname поменяется? тогда лучше char fname[MAX_PATH] = "text.txt"; (лишние символы автоматом инициилизируются нулями) а стиль не очень то красиво... где вы тут стиль увидели... программа то после исправления будет работать но стиля оформления тут и близко нет... одна команда пишется в три строки if((in = fopen(fname, "rt")) == NULL) { return; } а две команды в одну if(m == name){ fclose(in); return; }; да еще и ; после фигурных скобок лучше бы эти два куска оформить наоборот Я все это говорю не к тому что хочу человека обидеть... сам и учу и учусь (к примеру у меня почти полное отсутствие запятых) --------------------
Когда невозможно уже работать напряженнее, начни работать умнее. |
|||
|
||||
| DENNN |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Это в начале, а в процессе перезаписи в этот буфер более короткой строки уже не все
Потому что, возможно в дальнейшем требуется буфер именно такого размера
Ай-ай
Это сообщение отредактировал(а) DENNN - 19.5.2003, 20:54 |
||||||||
|
|||||||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Другими словами, рассуждение о стиле - это больше во флейм, а если уж попрекать другого, то хотя бы себе при этом не противоречить.
Без обид. Ничего лишнего. Просто человек конкретный вопрос задал, а вы ему уже все кости перемыли |
|||
|
||||
| Fantasist |
|
|||
|
Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Поддержу HexoGenus. Все взаимосвязанно: если у человека в коде бардак, то это показывает небрежный подход к написанию программы, а это уже весьма существенное качество.
-------------------- Волны гасят ветер... |
|||
|
||||
| TimPP |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 22.5.2003 Репутация: нет Всего: нет |
Ни чего страшного, пару раз на грабли наступит типа:
... в этой строчке нельзя поставить BreakPoint на выполнение условия. И все встанет на свои места. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |