Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2012, 15:51   #1
Artem_Kokos
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 122
По умолчанию else if в языке СИ

Проблема с условиями, часть кода программы:
Код:
FILE *filein;
    FILE *fileout;
    
    char fname1[5], fname2[5];
    
    printf("Enter name of input file: "); scanf("%s", &fname1);
    printf("Enter name of output file: "); scanf("%s", &fname2);
    
    filein=fopen(fname1, "r");
    fileout=fopen(fname2, "w");
   
    if(filein==NULL){
      printf("Error: No input file in this directory!\n\n");
      fclose(filein);
      system("PAUSE");
      }
    else if(fileout==NULL){
      printf("Error: No output file in this directory!\n\n");
      fclose(fileout);
      system("PAUSE");
      }
Стал проверять, работают ли if & else if, вводя имена не существующих файлов, и обнаружил, что случай с if работает корректно, а случай с else if программа будто игнорирует. Что я не так написал?
Повторенье - мать ученья. И прибежище для лентяев.

Последний раз редактировалось Stilet; 11.02.2012 в 16:18.
Artem_Kokos вне форума Ответить с цитированием
Старый 11.02.2012, 16:27   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
    else { 
	  if(!fileout){
      printf("Error: No output file in this directory!\n\n");
      fclose(fileout);
      //system("PAUSE");
      }
	}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.02.2012, 17:02   #3
Artem_Kokos
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 122
По умолчанию

Это конечно вариант, но тоже не работает. А почему не работает так, как написано у меня? Еlse ведь интерпретируется как "В любом другом случае", разве нет? Поэтому если есть вариант отсутствия одного из файлов, нужно использовать if, затем else if, а если ни одно из них не выполнилось (оба файла существуют), то выполняется оператор else, в котором и будет основная часть программы.
Повторенье - мать ученья. И прибежище для лентяев.
Artem_Kokos вне форума Ответить с цитированием
Старый 11.02.2012, 17:08   #4
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

fopen(fname2, "w") создаёт пустой файл, поэтому в elseif-ветвь у Вас и не заходит
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 11.02.2012, 17:09   #5
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Файл, который открывается для записи в него, создается если его не было. Посмотрите внимательнее в вашей директории наверняка там лежат эти файлы.
8Observer8 вне форума Ответить с цитированием
Старый 11.02.2012, 17:16   #6
Artem_Kokos
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 122
По умолчанию

Хм =) блин, я не знал этого, был уверен, что файл обязательно нужно создать, даже если он для записи. Спасибо большое!
Повторенье - мать ученья. И прибежище для лентяев.
Artem_Kokos вне форума Ответить с цитированием
Старый 11.02.2012, 17:34   #7
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Правильнее писать в стандартный поток ошибок (stderr):
Код:
fprintf(stderr, "error: can't open file \"%s\"\n", filename);
8Observer8 вне форума Ответить с цитированием
Старый 11.02.2012, 18:05   #8
Artem_Kokos
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 122
По умолчанию

О, спасибо, так и буду делать.
Повторенье - мать ученья. И прибежище для лентяев.
Artem_Kokos вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SOS!!!!(на каком языке программа?)Нужно переделать программу,а я даже не знаю на каком она языке:eek::eek:,РЕБЯТА ПОМОГИ Нака Помощь студентам 10 19.11.2011 15:16
Задача на языке с++! Северный Помощь студентам 2 05.12.2010 21:25
Программирование на языке С Nektarinka Помощь студентам 4 23.10.2010 20:52
на каком языке создаются такие программы ,какое СУБД и структура реализации БД,также на каком языке соста оля87 Помощь студентам 13 25.05.2009 18:08
Программа на русском языке в Windows XP на другом языке... Как? 29bit Свободное общение 4 01.02.2008 17:24