Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Ошибка при работе с файлами в Borland C++ 3.1


Автор: Alex103 4.6.2009, 01:02
Существует программа которая вытаскивает из текстового файл слова в кавычках. Вот код:
Код

#include <iostream.h>
#include <string.h>
#include <stdio.h>

int main(){
 int i,flag=0;
 char buf[50];
 FILE *fp;
 fp=fopen("text.txt","r+");
 fgets(buf,50, fp);
 cout <<"Exit words:\n";
 for(char *p=buf;*p;++p){
        if(*p=='"')flag^=1;
        else if(flag==1)cout <<*p;
 }
 cin >> i;
}


Но после ее выполнения на экран ничего не выводит. Хотя в Borland C++ Builder 6 все работает прекрассно.
Подскажите в чем может быть проблемма.

Автор: chaos 4.6.2009, 06:43
Код

cout << flush;


Добавлено через 1 минуту и 2 секунды
или вместо
Код

cout << "....\n";

делай так
Код

cout << "...." << endl;


Добавлено через 3 минуты и 29 секунд
да и вообще зачем использовать и stdio и iostream. я бы юзал что нибудь одно:
если stdio то и выводил через printf
если iostream то с файлами работал через ifstream

Автор: Alex103 10.6.2009, 14:12
Попробовал адаптировать код:
Код

#include <iostream.h>
#include <string.h>
#include <stdio.h>

int main(){
 int i,flag=0;
 char buf[50];
 FILE *fp;
 fp=fopen("text.txt","r");
 if(!fp)cout<<"Error open file";
 fgets(buf,50, fp);
 cout <<"Exit words:\n";
 for(char *p=buf;*p;++p){
    if(*p=='"')flag^=1;
        else if(flag==1)cout <<*p;
 }
 cin >> i;
}




Выдает ошибку Error open file
Подскажите в чем может ыбть проблемма??

Автор: zim22 10.6.2009, 14:20
Цитата(Alex103 @  10.6.2009,  14:12 Найти цитируемый пост)
Выдает ошибку Error open fileПодскажите в чем может ыбть проблемма??

в том, что произошла ошибка во время открытия файла. возможно его нет в каталоге с программой. попробуйте указать полный путь к файлу. 

Автор: Alex103 10.6.2009, 14:24
поправил
Код

 fp=fopen("C:\text.txt","r");


Выдает ту же ошибку. Самое интересное в том что в C++ Builder 6 все работает прекрассно. А мне нужно лабу сдать в BC3.1

Автор: azesmcar 10.6.2009, 14:37
Цитата(Alex103 @  10.6.2009,  14:24 Найти цитируемый пост)
поправил

хреново как-то поправил.
Цитата

fp=fopen("C:\\text.txt","r");


Автор: Alex103 10.6.2009, 14:53
Цитата(azesmcar @ 10.6.2009,  14:37)
Цитата(Alex103 @  10.6.2009,  14:24 Найти цитируемый пост)
поправил

хреново как-то поправил.
Цитата

fp=fopen("C:\\text.txt","r");


Действительно заработало, а ы чем смысл такой записи?? Это же ведь локальный файл, а к ним ведется обращение через один слеш. 

Теперь Borland C++ Builder 6 ругается на эту запись, в чем может быть проблемма??

Автор: СтадоБаранов 10.6.2009, 14:56
один слеш используется для спецсимволов наподобие \n \t  ... если постаить два слеша, то компилятор понимет его как один... отменяет спецназначение.

Автор: xvr 10.6.2009, 14:57
Цитата(Alex103 @ 10.6.2009,  14:53)
Цитата(azesmcar @ 10.6.2009,  14:37)
Цитата(Alex103 @  10.6.2009,  14:24 Найти цитируемый пост)
поправил

хреново как-то поправил.
Цитата

fp=fopen("C:\\text.txt","r");


Действительно заработало, а ы чем смысл такой записи?? Это же ведь локальный файл, а к ним ведется обращение через один слеш. 

Теперь Borland C++ Builder 6 ругается на эту запись, в чем может быть проблемма??

Ох, не сдашь ты лабу  smile 

Автор: Alex103 10.6.2009, 15:04
Спасибо всем за помощь. Тема закрыта. Лабу сдам обязательно.  smile 

Автор: andrew_121 10.6.2009, 15:05
Цитата(Alex103 @  10.6.2009,  14:53 Найти цитируемый пост)
Теперь Borland C++ Builder 6 ругается на эту запись, в чем может быть проблемма??

По подробнее пожалуйста....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)